]> git.saurik.com Git - apple/libc.git/blobdiff - stdlib/FreeBSD/merge_b.c.patch
Libc-583.tar.gz
[apple/libc.git] / stdlib / FreeBSD / merge_b.c.patch
diff --git a/stdlib/FreeBSD/merge_b.c.patch b/stdlib/FreeBSD/merge_b.c.patch
new file mode 100644 (file)
index 0000000..7bf8e65
--- /dev/null
@@ -0,0 +1,92 @@
+--- 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;