merge_b.c.patch   [plain text]


--- merge_b.c.orig	2008-05-21 02:51:18.000000000 -0700
+++ merge_b.c	2008-05-21 02:54:59.000000000 -0700
@@ -57,9 +57,9 @@ __FBSDID("$FreeBSD: src/lib/libc/stdlib/
 #include <string.h>
 
 static void setup(u_char *, u_char *, size_t, size_t,
-    int (*)(const void *, const void *));
+    int (^)(const void *, const void *));
 static void insertionsort(u_char *, size_t, size_t,
-    int (*)(const void *, const void *));
+    int (^)(const void *, const void *));
 
 #define ISIZE sizeof(int)
 #define PSIZE sizeof(u_char *)
@@ -95,11 +95,11 @@ static void insertionsort(u_char *, size
  * Arguments are as for qsort.
  */
 int
-mergesort(base, nmemb, size, cmp)
+mergesort_b(base, nmemb, size, cmp)
 	void *base;
 	size_t nmemb;
 	size_t size;
-	int (*cmp)(const void *, const void *);
+	int (^cmp)(const void *, const void *);
 {
 	size_t i;
 	int sense;
@@ -141,7 +141,7 @@ mergesort(base, nmemb, size, cmp)
 	    		p2 = *EVAL(p2);
 	    	l2 = list1 + (p2 - list2);
 	    	while (f1 < l1 && f2 < l2) {
-	    		if ((*cmp)(f1, f2) <= 0) {
+	    		if (cmp(f1, f2) <= 0) {
 	    			q = f2;
 	    			b = f1, t = l1;
 	    			sense = -1;
@@ -160,12 +160,12 @@ mergesort(base, nmemb, size, cmp)
 EXPONENTIAL:	    		for (i = size; ; i <<= 1)
 	    				if ((p = (b + i)) >= t) {
 	    					if ((p = t - size) > b &&
-						    (*cmp)(q, p) <= sense)
+						    cmp(q, p) <= sense)
 	    						t = p;
 	    					else
 	    						b = p;
 	    					break;
-	    				} else if ((*cmp)(q, p) <= sense) {
+	    				} else if (cmp(q, p) <= sense) {
 	    					t = p;
 	    					if (i == size)
 	    						big = 0;
@@ -174,14 +174,14 @@ EXPONENTIAL:	    		for (i = size; ; i <<
 	    					b = p;
 				while (t > b+size) {
 	    				i = (((t - b) / size) >> 1) * size;
-	    				if ((*cmp)(q, p = b + i) <= sense)
+	    				if (cmp(q, p = b + i) <= sense)
 	    					t = p;
 	    				else
 	    					b = p;
 	    			}
 	    			goto COPY;
 FASTCASE:	    		while (i > size)
-	    				if ((*cmp)(q,
+	    				if (cmp(q,
 	    					p = b + (i >>= 1)) <= sense)
 	    					t = p;
 	    				else
@@ -261,10 +261,11 @@ COPY:	    			b = t;
 void
 setup(list1, list2, n, size, cmp)
 	size_t n, size;
-	int (*cmp)(const void *, const void *);
+	int (^cmp)(const void *, const void *);
 	u_char *list1, *list2;
 {
-	int i, length, size2, tmp, sense;
+	size_t i, size2;
+	int length, tmp, sense;
 	u_char *f1, *f2, *s, *l2, *last, *p2;
 
 	size2 = size*2;
@@ -336,7 +337,7 @@ static void
 insertionsort(a, n, size, cmp)
 	u_char *a;
 	size_t n, size;
-	int (*cmp)(const void *, const void *);
+	int (^cmp)(const void *, const void *);
 {
 	u_char *ai, *s, *t, *u, tmp;
 	int i;