From dedc990e28c0755b33ccbaee0c19d22f430563e6 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sat, 23 Nov 2013 21:10:06 -0500 Subject: [PATCH] Fix array API inconsistency g_array_remove_range and g_byte_array_remove_range return a pointer to the array, g_ptr_array_remove_range returns void. Since it is pretty harmless, make it return the array too. https://bugzilla.gnome.org/show_bug.cgi?id=159528 --- glib/garray.c | 18 +++++++++++------- glib/garray.h | 2 +- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/glib/garray.c b/glib/garray.c index 1446492..b510bb2 100644 --- a/glib/garray.c +++ b/glib/garray.c @@ -1238,18 +1238,20 @@ g_ptr_array_remove_index_fast (GPtrArray *farray, /** * g_ptr_array_remove_range: - * @array: a @GPtrArray. - * @index_: the index of the first pointer to remove. - * @length: the number of pointers to remove. + * @array: a @GPtrArray + * @index_: the index of the first pointer to remove + * @length: the number of pointers to remove * * Removes the given number of pointers starting at the given index * from a #GPtrArray. The following elements are moved to close the * gap. If @array has a non-%NULL #GDestroyNotify function it is called * for the removed elements. * + * Returns: the @array + * * Since: 2.4 **/ -void +GPtrArray * g_ptr_array_remove_range (GPtrArray *farray, guint index_, guint length) @@ -1257,9 +1259,9 @@ g_ptr_array_remove_range (GPtrArray *farray, GRealPtrArray* array = (GRealPtrArray*) farray; guint n; - g_return_if_fail (array); - g_return_if_fail (index_ < array->len); - g_return_if_fail (index_ + length <= array->len); + g_return_val_if_fail (array != NULL, NULL); + g_return_val_if_fail (index_ < array->len, NULL); + g_return_val_if_fail (index_ + length <= array->len, NULL); if (array->element_free_func != NULL) { @@ -1281,6 +1283,8 @@ g_ptr_array_remove_range (GPtrArray *farray, for (i = 0; i < length; i++) array->pdata[array->len + i] = NULL; } + + return array; } /** diff --git a/glib/garray.h b/glib/garray.h index f3d7cee..018436f 100644 --- a/glib/garray.h +++ b/glib/garray.h @@ -163,7 +163,7 @@ GLIB_AVAILABLE_IN_ALL gboolean g_ptr_array_remove_fast (GPtrArray *array, gpointer data); GLIB_AVAILABLE_IN_ALL -void g_ptr_array_remove_range (GPtrArray *array, +GPtrArray *g_ptr_array_remove_range (GPtrArray *array, guint index_, guint length); GLIB_AVAILABLE_IN_ALL -- 2.7.4