From 053a1ce434558dc03dbfa980fc2de8fd9484ba3e Mon Sep 17 00:00:00 2001 From: Owen Taylor Date: Tue, 7 May 2002 15:32:08 +0000 Subject: [PATCH] Fixes for #79347, Ron Arts. Tue May 7 11:24:22 2002 Owen Taylor Fixes for #79347, Ron Arts. * glib/gqsort.c (g_qsort_with_data): Handle 0 elements, don't g_return_if_fail(). * tests/qsort-test.c (main): Add a 0 element test. * glib/garray.c (g_[ptr_]array_sort_with[_data]): Remove invalid assertions that array->pdata != NULL .. it's NULL for 0 elements which is a valid case. --- ChangeLog | 13 +++++++++++++ ChangeLog.pre-2-10 | 13 +++++++++++++ ChangeLog.pre-2-12 | 13 +++++++++++++ ChangeLog.pre-2-2 | 13 +++++++++++++ ChangeLog.pre-2-4 | 13 +++++++++++++ ChangeLog.pre-2-6 | 13 +++++++++++++ ChangeLog.pre-2-8 | 13 +++++++++++++ glib/garray.c | 4 ---- glib/gqsort.c | 7 +++++-- tests/qsort-test.c | 3 +++ 10 files changed, 99 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 77435c40..d64e81f7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +Tue May 7 11:24:22 2002 Owen Taylor + + Fixes for #79347, Ron Arts. + + * glib/gqsort.c (g_qsort_with_data): Handle 0 elements, + don't g_return_if_fail(). + + * tests/qsort-test.c (main): Add a 0 element test. + + * glib/garray.c (g_[ptr_]array_sort_with[_data]): + Remove invalid assertions that array->pdata != NULL .. + it's NULL for 0 elements which is a valid case. + Mon May 6 16:00:41 2002 Owen Taylor * glib/gbacktrace.h: Exclude OSF from alpha definition diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 77435c40..d64e81f7 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,16 @@ +Tue May 7 11:24:22 2002 Owen Taylor + + Fixes for #79347, Ron Arts. + + * glib/gqsort.c (g_qsort_with_data): Handle 0 elements, + don't g_return_if_fail(). + + * tests/qsort-test.c (main): Add a 0 element test. + + * glib/garray.c (g_[ptr_]array_sort_with[_data]): + Remove invalid assertions that array->pdata != NULL .. + it's NULL for 0 elements which is a valid case. + Mon May 6 16:00:41 2002 Owen Taylor * glib/gbacktrace.h: Exclude OSF from alpha definition diff --git a/ChangeLog.pre-2-12 b/ChangeLog.pre-2-12 index 77435c40..d64e81f7 100644 --- a/ChangeLog.pre-2-12 +++ b/ChangeLog.pre-2-12 @@ -1,3 +1,16 @@ +Tue May 7 11:24:22 2002 Owen Taylor + + Fixes for #79347, Ron Arts. + + * glib/gqsort.c (g_qsort_with_data): Handle 0 elements, + don't g_return_if_fail(). + + * tests/qsort-test.c (main): Add a 0 element test. + + * glib/garray.c (g_[ptr_]array_sort_with[_data]): + Remove invalid assertions that array->pdata != NULL .. + it's NULL for 0 elements which is a valid case. + Mon May 6 16:00:41 2002 Owen Taylor * glib/gbacktrace.h: Exclude OSF from alpha definition diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index 77435c40..d64e81f7 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,16 @@ +Tue May 7 11:24:22 2002 Owen Taylor + + Fixes for #79347, Ron Arts. + + * glib/gqsort.c (g_qsort_with_data): Handle 0 elements, + don't g_return_if_fail(). + + * tests/qsort-test.c (main): Add a 0 element test. + + * glib/garray.c (g_[ptr_]array_sort_with[_data]): + Remove invalid assertions that array->pdata != NULL .. + it's NULL for 0 elements which is a valid case. + Mon May 6 16:00:41 2002 Owen Taylor * glib/gbacktrace.h: Exclude OSF from alpha definition diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 77435c40..d64e81f7 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,16 @@ +Tue May 7 11:24:22 2002 Owen Taylor + + Fixes for #79347, Ron Arts. + + * glib/gqsort.c (g_qsort_with_data): Handle 0 elements, + don't g_return_if_fail(). + + * tests/qsort-test.c (main): Add a 0 element test. + + * glib/garray.c (g_[ptr_]array_sort_with[_data]): + Remove invalid assertions that array->pdata != NULL .. + it's NULL for 0 elements which is a valid case. + Mon May 6 16:00:41 2002 Owen Taylor * glib/gbacktrace.h: Exclude OSF from alpha definition diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 77435c40..d64e81f7 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,16 @@ +Tue May 7 11:24:22 2002 Owen Taylor + + Fixes for #79347, Ron Arts. + + * glib/gqsort.c (g_qsort_with_data): Handle 0 elements, + don't g_return_if_fail(). + + * tests/qsort-test.c (main): Add a 0 element test. + + * glib/garray.c (g_[ptr_]array_sort_with[_data]): + Remove invalid assertions that array->pdata != NULL .. + it's NULL for 0 elements which is a valid case. + Mon May 6 16:00:41 2002 Owen Taylor * glib/gbacktrace.h: Exclude OSF from alpha definition diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 77435c40..d64e81f7 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,16 @@ +Tue May 7 11:24:22 2002 Owen Taylor + + Fixes for #79347, Ron Arts. + + * glib/gqsort.c (g_qsort_with_data): Handle 0 elements, + don't g_return_if_fail(). + + * tests/qsort-test.c (main): Add a 0 element test. + + * glib/garray.c (g_[ptr_]array_sort_with[_data]): + Remove invalid assertions that array->pdata != NULL .. + it's NULL for 0 elements which is a valid case. + Mon May 6 16:00:41 2002 Owen Taylor * glib/gbacktrace.h: Exclude OSF from alpha definition diff --git a/glib/garray.c b/glib/garray.c index 9a5758f8..260ef64b 100644 --- a/glib/garray.c +++ b/glib/garray.c @@ -276,7 +276,6 @@ g_array_sort (GArray *farray, GRealArray *array = (GRealArray*) farray; g_return_if_fail (array != NULL); - g_return_if_fail (array->data != NULL); qsort (array->data, array->len, @@ -292,7 +291,6 @@ g_array_sort_with_data (GArray *farray, GRealArray *array = (GRealArray*) farray; g_return_if_fail (array != NULL); - g_return_if_fail (array->data != NULL); g_qsort_with_data (array->data, array->len, @@ -570,7 +568,6 @@ g_ptr_array_sort (GPtrArray *array, GCompareFunc compare_func) { g_return_if_fail (array != NULL); - g_return_if_fail (array->pdata != NULL); qsort (array->pdata, array->len, @@ -584,7 +581,6 @@ g_ptr_array_sort_with_data (GPtrArray *array, gpointer user_data) { g_return_if_fail (array != NULL); - g_return_if_fail (array->pdata != NULL); g_qsort_with_data (array->pdata, array->len, diff --git a/glib/gqsort.c b/glib/gqsort.c index 040be793..5dcb4bf0 100644 --- a/glib/gqsort.c +++ b/glib/gqsort.c @@ -120,10 +120,13 @@ g_qsort_with_data (gconstpointer pbase, char *pivot_buffer = (char *) g_alloca (size); const size_t max_thresh = MAX_THRESH * size; - g_return_if_fail (total_elems > 0); - g_return_if_fail (pbase != NULL); + g_return_if_fail (total_elems >= 0); + g_return_if_fail (pbase != NULL || total_elems == 0); g_return_if_fail (compare_func != NULL); + if (total_elems == 0) + return; + if (total_elems > MAX_THRESH) { char *lo = base_ptr; diff --git a/tests/qsort-test.c b/tests/qsort-test.c index 4e119436..9a1bc330 100644 --- a/tests/qsort-test.c +++ b/tests/qsort-test.c @@ -23,5 +23,8 @@ main () for (i = 0; i < SIZE - 1; i++) g_assert (array[i] <= array[i+1]); + /* 0 elemenents is a valid case */ + g_qsort_with_data (array, 0, sizeof (guint32), sort, NULL); + return 0; } -- 2.34.1