From: Alan Cox Date: Sun, 7 Dec 2014 14:31:17 +0000 (+0000) Subject: qsort: fix sort order X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=6385f0f1f8514cb1fcbbc8fe71da38796ecdbaea;p=FUZIX.git qsort: fix sort order From: Will Sowerbutts --- diff --git a/Library/libs/qsort.c b/Library/libs/qsort.c index 3dbebaa5..7462d19f 100644 --- a/Library/libs/qsort.c +++ b/Library/libs/qsort.c @@ -38,10 +38,10 @@ static void _wqsort(void *basep, int lo, int hi, base[i] = *p; while (i < j) { - while (((*cmp) ((base + j), p)) <= 0) + while (((*cmp) ((base + j), p)) > 0) --j; base[i] = base[j]; - while ((i < j) && (((*cmp) ((base + i), p)) > 0)) + while ((i < j) && (((*cmp) ((base + i), p)) <= 0)) ++i; base[j] = base[i]; } @@ -75,10 +75,10 @@ static void _lqsort(long *base, int lo, int hi, int (*cmp)(const void *, const v base[i] = *p; while (i < j) { - while (((*cmp) ((base + j), p)) <= 0) + while (((*cmp) ((base + j), p)) > 0) --j; base[i] = base[j]; - while ((i < j) && (((*cmp) ((base + i), p)) > 0)) + while ((i < j) && (((*cmp) ((base + i), p)) <= 0)) ++i; base[j] = base[i]; } @@ -114,10 +114,10 @@ static void _nqsort(void *basep, int lo, int hi, int size, p = _qbuf; while (i < j) { - while (((*cmp) ((base + size * j), p)) <= 0) + while (((*cmp) ((base + size * j), p)) > 0) --j; moveitem((base + size * i), (base + size * j), size); - while ((i < j) && (((*cmp) ((base + size * i), p)) > 0)) + while ((i < j) && (((*cmp) ((base + size * i), p)) <= 0)) ++i; moveitem((base + size * j), (base + size * i), size); }