Formerly ../stdlib/msort.c.~2~
authorroland <roland>
Mon, 11 May 1992 06:30:50 +0000 (06:30 +0000)
committerroland <roland>
Mon, 11 May 1992 06:30:50 +0000 (06:30 +0000)
stdlib/msort.c

index 7325188..193536c 100644 (file)
@@ -6,14 +6,14 @@
 #include <stdlib.h>
 #include <string.h>
 
-#define MEMCPY(dst, src, s)            \
-  ((s) == sizeof (int)                 \
-   ? *(int *) (dst) = *(int *) (src)   \
+#define MEMCPY(dst, src, s)                    \
+  ((s) == sizeof (int)                         \
+   ? (*(int *) (dst) = *(int *) (src), (dst))  \
    : memcpy (dst, src, s))
 
 static void
 DEFUN(msort_with_tmp, (b, n, s, t),
-      PTR b AND size_t n AND size_t s AND __compar_fn_t cmp AND char *t);
+      PTR b AND size_t n AND size_t s AND __compar_fn_t cmp AND char *t)
 {
   char *tmp;
   char *b1, *b2;
@@ -25,7 +25,7 @@ DEFUN(msort_with_tmp, (b, n, s, t),
   n1 = n / 2;
   n2 = n - n1;
   b1 = b;
-  b2 = &b[n1 * s];
+  b2 = (char *) b + (n1 * s);
 
   msort_with_tmp (b1, n1, s, cmp, t);
   msort_with_tmp (b2, n2, s, cmp, t);
@@ -34,27 +34,28 @@ DEFUN(msort_with_tmp, (b, n, s, t),
 
   while (n1 > 0 && n2 > 0)
     {
-      if (cmp (b1, b2) <= 0)
+      if ((*cmp) (b1, b2) <= 0)
        {
          MEMCPY (tmp, b1, s);
+         b1 += s;
          --n1;
        }
       else
        {
          MEMCPY (tmp, b2, s);
+         b2 += s;
          --n2;
        }
-      b1 += s;
       tmp += s;
     }
-  if (n1 > 0)4)
+  if (n1 > 0)
     memcpy (tmp, b1, n1 * s);
   memcpy (b, t, (n - n2) * s);
 }
 
 void
 DEFUN(msort, (b, n, s),
-      PTR b AND size_t n AND size_t s AND __compar_fn_t cmp);
+      PTR b AND size_t n AND size_t s AND __compar_fn_t cmp)
 {
   msort_with_tmp (b, n, s, cmp, __alloca (n * s));
 }