From ac48ad2e5e553248a7a5991659a68ecdcacf8ef3 Mon Sep 17 00:00:00 2001 From: David Schultz Date: Mon, 14 Jan 2008 09:21:34 +0000 Subject: Changing 'r' to a size_t in the previous commit turned quicksort into slowsort for some sequences because different parts of the code used 'r' to store two different things, one of which was signed. Clean things up by splitting 'r' into two variables, and use a more meaningful name. --- lib/libc/stdlib/qsort.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'lib/libc/stdlib/qsort.c') diff --git a/lib/libc/stdlib/qsort.c b/lib/libc/stdlib/qsort.c index 0958cd3f0fcf..3687b0579ffd 100644 --- a/lib/libc/stdlib/qsort.c +++ b/lib/libc/stdlib/qsort.c @@ -112,6 +112,7 @@ qsort(void *a, size_t n, size_t es, cmp_t *cmp) { char *pa, *pb, *pc, *pd, *pl, *pm, *pn; size_t d, r; + int cmp_result; int swaptype, swap_cnt; loop: SWAPINIT(a, es); @@ -141,16 +142,16 @@ loop: SWAPINIT(a, es); pc = pd = (char *)a + (n - 1) * es; for (;;) { - while (pb <= pc && (r = CMP(thunk, pb, a)) <= 0) { - if (r == 0) { + while (pb <= pc && (cmp_result = CMP(thunk, pb, a)) <= 0) { + if (cmp_result == 0) { swap_cnt = 1; swap(pa, pb); pa += es; } pb += es; } - while (pb <= pc && (r = CMP(thunk, pc, a)) >= 0) { - if (r == 0) { + while (pb <= pc && (cmp_result = CMP(thunk, pc, a)) >= 0) { + if (cmp_result == 0) { swap_cnt = 1; swap(pc, pd); pd -= es; -- cgit v1.2.3