Minor fixes to qsort_with_data()
authorJeffrey Stedfast <fejj@gnome.org>
Fri, 1 Apr 2011 20:39:05 +0000 (16:39 -0400)
committerJeffrey Stedfast <fejj@gnome.org>
Fri, 1 Apr 2011 20:39:05 +0000 (16:39 -0400)
eglib/src/gqsort.c

index 5a9060ea9146667143bf3fc16256c37c8fee1e6d..8550b18845b1da27762cad010a3961af93254d8f 100644 (file)
@@ -92,6 +92,9 @@ g_qsort_with_data (gpointer base, size_t nmemb, size_t size, GCompareDataFunc co
        char *mid, *lo, *hi;
        size_t n, n1, n2;
        
+       if (nmemb <= 1)
+               return;
+       
        /* initialize our stack */
        sp = stack;
        QSORT_PUSH (sp, base, nmemb);
@@ -149,7 +152,7 @@ g_qsort_with_data (gpointer base, size_t nmemb, size_t size, GCompareDataFunc co
                n2 = (hi - k) / size;
                n1 = (k - lo) / size;
                
-               if (n1 == 1 || n2 == 1) {
+               if (n1 <= 1 || n2 <= 1) {
                        /* pathological case detected, switch to insertion sort */
                        for (i = lo + size; i <= hi; i += size)
                                for (k = i; k > lo && compare (k - size, k, user_data) > 0; k -= size)