diff --git a/glib/garray.c b/glib/garray.c index be482335a..613c6401c 100644 --- a/glib/garray.c +++ b/glib/garray.c @@ -1890,6 +1890,7 @@ g_ptr_array_extend_and_steal (GPtrArray *array_to_extend, * to the elements moved from @array to @array_to_extend. */ pdata = g_steal_pointer (&array->pdata); array->len = 0; + ((GRealPtrArray *) array)->alloc = 0; g_ptr_array_unref (array); g_free (pdata); } diff --git a/glib/tests/array-test.c b/glib/tests/array-test.c index bdd6a2cb9..1da514a3e 100644 --- a/glib/tests/array-test.c +++ b/glib/tests/array-test.c @@ -1298,6 +1298,8 @@ pointer_array_extend_and_steal (void) g_assert_cmpuint (ptr_array3->len, ==, 0); g_assert_null (ptr_array3->pdata); + g_ptr_array_add (ptr_array2, NULL); + g_ptr_array_free (ptr_array, TRUE); g_ptr_array_free (ptr_array3, TRUE);