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.
This commit is contained in:
Matthias Clasen 2010-06-20 00:09:00 -04:00
parent ea6470e31a
commit 5fffa39b6a

View File

@ -1075,13 +1075,12 @@ g_ptr_array_remove_index_fast (GPtrArray *farray,
g_return_val_if_fail (index_ < array->len, NULL); g_return_val_if_fail (index_ < array->len, NULL);
result = array->pdata[index_]; result = array->pdata[index_];
if (array->element_free_func != NULL)
array->element_free_func (array->pdata[index_]);
if (index_ != array->len - 1) if (index_ != array->len - 1)
{ array->pdata[index_] = array->pdata[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->len -= 1; array->len -= 1;