From 37756a06c9c8821e4cbc22218046b88cdc85ca90 Mon Sep 17 00:00:00 2001 From: Philip Withnall Date: Tue, 8 Mar 2016 18:59:34 +0000 Subject: array: Support clearing an empty array with g_array_remove_range() Previously, calling g_array_remove_range(array, 0, array->len) on an empty array would result in a precondition failure in g_array_remove_range(), as the given start index (0), was not strictly less than the array length (0). Allow the index to equal the array length, so that zero elements can be removed from any array. A subsequent check makes sure that the array length is not overflowed by the index + length. https://bugzilla.gnome.org/show_bug.cgi?id=763339 --- glib/tests/array-test.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'glib/tests/array-test.c') diff --git a/glib/tests/array-test.c b/glib/tests/array-test.c index 86b613a7f..a0074d4c3 100644 --- a/glib/tests/array-test.c +++ b/glib/tests/array-test.c @@ -168,6 +168,10 @@ array_remove_range (void) prev = cur; } + /* Ensure the entire array can be cleared, even when empty. */ + g_array_remove_range (garray, 0, garray->len); + g_array_remove_range (garray, 0, garray->len); + g_array_free (garray, TRUE); } @@ -711,6 +715,10 @@ byte_array_remove_range (void) g_assert (gbarray->data[4*i+3] == 'd'); } + /* Ensure the entire array can be cleared, even when empty. */ + g_byte_array_remove_range (gbarray, 0, gbarray->len); + g_byte_array_remove_range (gbarray, 0, gbarray->len); + g_byte_array_free (gbarray, TRUE); } -- cgit v1.2.1