diff options
-rw-r--r-- | src/lib/libc/stdlib/qsort.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/lib/libc/stdlib/qsort.c b/src/lib/libc/stdlib/qsort.c index 58f2ec4709..ca73e67f29 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.17 2017/05/24 21:18:25 millert Exp $ */ | 1 | /* $OpenBSD: qsort.c,v 1.18 2017/05/30 14:54:09 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. |
@@ -129,18 +129,18 @@ introsort(char *a, size_t n, size_t es, size_t maxdepth, int swaptype, | |||
129 | int cmp_result; | 129 | int cmp_result; |
130 | size_t r, s; | 130 | size_t r, s; |
131 | 131 | ||
132 | loop: if (maxdepth == 0) { | 132 | loop: if (n < 7) { |
133 | if (heapsort(a, n, es, cmp) == 0) | ||
134 | return; | ||
135 | } | ||
136 | maxdepth--; | ||
137 | if (n < 7) { | ||
138 | for (pm = a + es; pm < a + n * es; pm += es) | 133 | for (pm = a + es; pm < a + n * es; pm += es) |
139 | for (pl = pm; pl > a && cmp(pl - es, pl) > 0; | 134 | for (pl = pm; pl > a && cmp(pl - es, pl) > 0; |
140 | pl -= es) | 135 | pl -= es) |
141 | swap(pl, pl - es); | 136 | swap(pl, pl - es); |
142 | return; | 137 | return; |
143 | } | 138 | } |
139 | if (maxdepth == 0) { | ||
140 | if (heapsort(a, n, es, cmp) == 0) | ||
141 | return; | ||
142 | } | ||
143 | maxdepth--; | ||
144 | pm = a + (n / 2) * es; | 144 | pm = a + (n / 2) * es; |
145 | if (n > 7) { | 145 | if (n > 7) { |
146 | pl = a; | 146 | pl = a; |