From a11a08820e027186adb22301e71b8fc0e094bcb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szabolcs=20Horva=CC=81t?= Date: Mon, 20 May 2024 20:13:59 +0000 Subject: [PATCH] fix: fixed potential memory leak in `R_igraph_community_to_membership2()` --- src/rinterface_extra.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/rinterface_extra.c b/src/rinterface_extra.c index acca440a71e..4131552975a 100644 --- a/src/rinterface_extra.c +++ b/src/rinterface_extra.c @@ -7342,8 +7342,10 @@ SEXP R_igraph_community_to_membership2(SEXP pmerges, SEXP pvcount, igraph_vector_int_t membership; SEXP result; - R_SEXP_to_matrix_int(pmerges, &merges); - igraph_vector_int_init(&membership, 0); + IGRAPH_R_CHECK(R_SEXP_to_matrix_int(pmerges, &merges)); + IGRAPH_FINALLY(igraph_matrix_int_destroy, &merges); + + IGRAPH_R_CHECK(igraph_vector_int_init(&membership, 0)); IGRAPH_FINALLY(igraph_vector_int_destroy, &membership); IGRAPH_R_CHECK(igraph_community_to_membership(&merges, vcount, steps, &membership, 0)); @@ -7351,7 +7353,7 @@ SEXP R_igraph_community_to_membership2(SEXP pmerges, SEXP pvcount, igraph_matrix_int_destroy(&merges); igraph_vector_int_destroy(&membership); - IGRAPH_FINALLY_CLEAN(1); + IGRAPH_FINALLY_CLEAN(2); UNPROTECT(1); return result;