Bladeren bron

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...
Rich Felker 14 jaren geleden
bovenliggende
commit
b24bc15f5c
1 gewijzigde bestanden met toevoegingen van 1 en 1 verwijderingen
  1. 1 1
      src/stdlib/qsort.c

+ 1 - 1
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;