From 5fffa39b6ae8f8faf1036fbf07de02ffe84ef099 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sun, 20 Jun 2010 00:09:00 -0400 Subject: [PATCH] Fix a memory leak in g_ptr_array_remove_index_fast We need to call the element_free_func even if we remove the last element. Bug #618866. --- glib/garray.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/glib/garray.c b/glib/garray.c index a2bca9462..b1e3baafc 100644 --- a/glib/garray.c +++ b/glib/garray.c @@ -1075,13 +1075,12 @@ g_ptr_array_remove_index_fast (GPtrArray *farray, g_return_val_if_fail (index_ < array->len, NULL); result = array->pdata[index_]; - + + if (array->element_free_func != NULL) + array->element_free_func (array->pdata[index_]); + if (index_ != array->len - 1) - { - if (array->element_free_func != NULL) - array->element_free_func (array->pdata[index_]); - array->pdata[index_] = array->pdata[array->len - 1]; - } + array->pdata[index_] = array->pdata[array->len - 1]; array->len -= 1;