diff options
Diffstat (limited to 'src/lib/libc')
| -rw-r--r-- | src/lib/libc/stdlib/qsort.c | 20 | 
1 files changed, 10 insertions, 10 deletions
| diff --git a/src/lib/libc/stdlib/qsort.c b/src/lib/libc/stdlib/qsort.c index 1d9b1e9122..f16f9d0ebf 100644 --- a/src/lib/libc/stdlib/qsort.c +++ b/src/lib/libc/stdlib/qsort.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: qsort.c,v 1.13 2015/09/13 08:31:47 guenther Exp $ */ | 1 | /* $OpenBSD: qsort.c,v 1.14 2017/01/04 15:20:30 millert Exp $ */ | 
| 2 | /*- | 2 | /*- | 
| 3 | * Copyright (c) 1992, 1993 | 3 | * Copyright (c) 1992, 1993 | 
| 4 | * The Regents of the University of California. All rights reserved. | 4 | * The Regents of the University of California. All rights reserved. | 
| @@ -90,16 +90,16 @@ qsort(void *aa, size_t n, size_t es, int (*cmp)(const void *, const void *)) | |||
| 90 | 90 | ||
| 91 | loop: SWAPINIT(a, es); | 91 | loop: SWAPINIT(a, es); | 
| 92 | if (n < 7) { | 92 | if (n < 7) { | 
| 93 | for (pm = (char *)a + es; pm < (char *) a + n * es; pm += es) | 93 | for (pm = a + es; pm < a + n * es; pm += es) | 
| 94 | for (pl = pm; pl > (char *) a && cmp(pl - es, pl) > 0; | 94 | for (pl = pm; pl > a && cmp(pl - es, pl) > 0; | 
| 95 | pl -= es) | 95 | pl -= es) | 
| 96 | swap(pl, pl - es); | 96 | swap(pl, pl - es); | 
| 97 | return; | 97 | return; | 
| 98 | } | 98 | } | 
| 99 | pm = (char *)a + (n / 2) * es; | 99 | pm = a + (n / 2) * es; | 
| 100 | if (n > 7) { | 100 | if (n > 7) { | 
| 101 | pl = (char *)a; | 101 | pl = a; | 
| 102 | pn = (char *)a + (n - 1) * es; | 102 | pn = a + (n - 1) * es; | 
| 103 | if (n > 40) { | 103 | if (n > 40) { | 
| 104 | d = (n / 8) * es; | 104 | d = (n / 8) * es; | 
| 105 | pl = med3(pl, pl + d, pl + 2 * d, cmp); | 105 | pl = med3(pl, pl + d, pl + 2 * d, cmp); | 
| @@ -109,9 +109,9 @@ loop: SWAPINIT(a, es); | |||
| 109 | pm = med3(pl, pm, pn, cmp); | 109 | pm = med3(pl, pm, pn, cmp); | 
| 110 | } | 110 | } | 
| 111 | swap(a, pm); | 111 | swap(a, pm); | 
| 112 | pa = pb = (char *)a + es; | 112 | pa = pb = a + es; | 
| 113 | 113 | ||
| 114 | pc = pd = (char *)a + (n - 1) * es; | 114 | pc = pd = a + (n - 1) * es; | 
| 115 | for (;;) { | 115 | for (;;) { | 
| 116 | while (pb <= pc && (cmp_result = cmp(pb, a)) <= 0) { | 116 | while (pb <= pc && (cmp_result = cmp(pb, a)) <= 0) { | 
| 117 | if (cmp_result == 0) { | 117 | if (cmp_result == 0) { | 
| @@ -134,8 +134,8 @@ loop: SWAPINIT(a, es); | |||
| 134 | pc -= es; | 134 | pc -= es; | 
| 135 | } | 135 | } | 
| 136 | 136 | ||
| 137 | pn = (char *)a + n * es; | 137 | pn = a + n * es; | 
| 138 | r = min(pa - (char *)a, pb - pa); | 138 | r = min(pa - a, pb - pa); | 
| 139 | vecswap(a, pb - r, r); | 139 | vecswap(a, pb - r, r); | 
| 140 | r = min(pd - pc, pn - pd - es); | 140 | r = min(pd - pc, pn - pd - es); | 
| 141 | vecswap(pb, pn - r, r); | 141 | vecswap(pb, pn - r, r); | 
