Commit 0e50c8d6 authored by tbaederr's avatar tbaederr Committed by Philip Withnall
Browse files

array: Avoid sorting 0-sized arrays

Fixes #2264
parent 2c25fe26
......@@ -822,11 +822,12 @@ g_array_sort (GArray *farray,
g_return_if_fail (array != NULL);
/* Don't use qsort as we want a guaranteed stable sort */
g_qsort_with_data (array->data,
array->len,
array->elt_size,
(GCompareDataFunc)compare_func,
NULL);
if (array->len > 0)
g_qsort_with_data (array->data,
array->len,
array->elt_size,
(GCompareDataFunc)compare_func,
NULL);
}
/**
......@@ -853,11 +854,12 @@ g_array_sort_with_data (GArray *farray,
g_return_if_fail (array != NULL);
g_qsort_with_data (array->data,
array->len,
array->elt_size,
compare_func,
user_data);
if (array->len > 0)
g_qsort_with_data (array->data,
array->len,
array->elt_size,
compare_func,
user_data);
}
/**
......@@ -1984,11 +1986,12 @@ g_ptr_array_sort (GPtrArray *array,
g_return_if_fail (array != NULL);
/* Don't use qsort as we want a guaranteed stable sort */
g_qsort_with_data (array->pdata,
array->len,
sizeof (gpointer),
(GCompareDataFunc)compare_func,
NULL);
if (array->len > 0)
g_qsort_with_data (array->pdata,
array->len,
sizeof (gpointer),
(GCompareDataFunc)compare_func,
NULL);
}
/* Please keep this doc-comment in sync with
......@@ -2060,11 +2063,12 @@ g_ptr_array_sort_with_data (GPtrArray *array,
{
g_return_if_fail (array != NULL);
g_qsort_with_data (array->pdata,
array->len,
sizeof (gpointer),
compare_func,
user_data);
if (array->len > 0)
g_qsort_with_data (array->pdata,
array->len,
sizeof (gpointer),
compare_func,
user_data);
}
/**
......
......@@ -590,6 +590,10 @@ array_sort (gconstpointer test_data)
gint prev, cur;
garray = g_array_new (config->zero_terminated, config->clear_, sizeof (gint));
/* Sort empty array */
g_array_sort (garray, int_compare);
for (i = 0; i < 10000; i++)
{
cur = g_random_int_range (0, 10000);
......@@ -622,6 +626,10 @@ array_sort_with_data (gconstpointer test_data)
gint prev, cur;
garray = g_array_new (config->zero_terminated, config->clear_, sizeof (gint));
/* Sort empty array */
g_array_sort_with_data (garray, int_compare_data, NULL);
for (i = 0; i < 10000; i++)
{
cur = g_random_int_range (0, 10000);
......@@ -1334,6 +1342,10 @@ pointer_array_sort (void)
gint prev, cur;
gparray = g_ptr_array_new ();
/* Sort empty array */
g_ptr_array_sort (gparray, ptr_compare);
for (i = 0; i < 10000; i++)
{
val = g_random_int_range (0, 10000);
......@@ -1505,6 +1517,10 @@ pointer_array_sort_with_data (void)
gint prev, cur;
gparray = g_ptr_array_new ();
/* Sort empty array */
g_ptr_array_sort_with_data (gparray, ptr_compare_data, NULL);
for (i = 0; i < 10000; i++)
g_ptr_array_add (gparray, GINT_TO_POINTER (g_random_int_range (0, 10000)));
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment