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