mescc: Mes C Library: Fix qsort to support duplicate entries.
[mes.git] / lib / stdlib / qsort.c
index bac7f426df0b024ab6e8c8d25f20f7003e6f44f4..22f493e228e9165835f215f914e7f40c883e4c52 100644 (file)
@@ -37,11 +37,14 @@ qpart (void *base, size_t count, size_t size, int (*compare)(void const *, void
   size_t i = 0;
   for (size_t j = 0; j < count; j++)
     {
-      if (compare (base+j*size, p) < 0)
+      int c = compare (base+j*size, p);
+      if (c < 0)
         {
           qswap (base+i*size, base+j*size, size);
           i++;
         }
+      else if (c == 0)
+        i++;
     }
   if (compare (base+count*size, base+i*size) < 0)
     qswap (base+i*size, base+count*size, size);