From b24bc15f5c3828184f123698b4b545fef4edac99 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Thu, 17 Feb 2011 00:03:24 -0500 Subject: don't compare elements with themselves during qsort. this is actually a workaround for a bug in gcc, whereby it asserts inequality of the keys being compared... --- src/stdlib/qsort.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/stdlib/qsort.c') diff --git a/src/stdlib/qsort.c b/src/stdlib/qsort.c index f5bf3d02..91a3361d 100644 --- a/src/stdlib/qsort.c +++ b/src/stdlib/qsort.c @@ -28,7 +28,7 @@ static void sift(char *base, size_t root, size_t nel, size_t width, int (*cmp)(c max = 2*root; if (max < nel && cmp(base+max*width, base+(max+1)*width) < 0) max++; - if (cmp(base+root*width, base+max*width) < 0) { + if (max && cmp(base+root*width, base+max*width) < 0) { swap(base+root*width, base+max*width, width); root = max; } else break; -- cgit v1.2.1