halt getspnam[_r] search on error accessing TCB shadow
[musl] / src / stdlib / qsort.c
index 866af0e..da58fd3 100644 (file)
@@ -21,6 +21,9 @@
 
 /* Minor changes by Rich Felker for integration in musl, 2011-04-27. */
 
+/* Smoothsort, an adaptive variant of Heapsort.  Memory usage: O(1).
+   Run time: Worst case O(n log n), close to O(n) in the mostly-sorted case. */
+
 #include <stdint.h>
 #include <stdlib.h>
 #include <string.h>
@@ -155,12 +158,16 @@ void qsort(void *base, size_t nel, size_t width, cmpfun cmp)
 {
        size_t lp[12*sizeof(size_t)];
        size_t i, size = width * nel;
-       unsigned char *head = base,
-                     *high = head + size - width;
+       unsigned char *head, *high;
        size_t p[2] = {1, 0};
        int pshift = 1;
        int trail;
 
+       if (!size) return;
+
+       head = base;
+       high = head + size - width;
+
        /* Precompute Leonardo numbers, scaled by element width */
        for(lp[0]=lp[1]=width, i=2; (lp[i]=lp[i-2]+lp[i-1]+width) < size; i++);