Fix a memory leak in g_ptr_array_remove_index_fast
authorMatthias Clasen <mclasen@redhat.com>
Sun, 20 Jun 2010 04:09:00 +0000 (00:09 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Sun, 20 Jun 2010 04:15:31 +0000 (00:15 -0400)
We need to call the element_free_func even if we remove the
last element. Bug #618866.

glib/garray.c

index a2bca94620e8fd65965fcb5f710f2f4e3b780c62..b1e3baafc20c821e3f99dd2da37e38de89958541 100644 (file)
@@ -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;