From 73fb3d2bac243715d5c115c8dc77c35ee6c93ef5 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Thu, 16 Feb 2006 02:59:36 +0000 Subject: [PATCH] qsort patch from Paul Eggert svn: r2252 --- src/mzscheme/gc2/my_qsort.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/mzscheme/gc2/my_qsort.c b/src/mzscheme/gc2/my_qsort.c index ed1cdf826f..8247eea489 100644 --- a/src/mzscheme/gc2/my_qsort.c +++ b/src/mzscheme/gc2/my_qsort.c @@ -1,25 +1,31 @@ -#if defined(sparc) || defined(__sparc) || defined(__sparc__) +#if defined(sun) || defined(__sun) || defined(__sun__) /* Sun's qsort() is broken. */ #define MAXSTACK 100 static void exchange(void *a, void *b, size_t size) { size_t i; + int *ai = (int *) a; + int *bi = (int *) b; + char *ac; + char *bc; /****************** * exchange a,b * ******************/ for (i = sizeof(int); i <= size; i += sizeof(int)) { - int t = *((int *)a); - *(((int *)a)++) = *((int *)b); - *(((int *)b)++) = t; + int t = *ai; + *ai++ = *bi; + *bi++ = t; } + ac = (char *) ai; + bc = (char *) bi; for (i = i - sizeof(int) + 1; i <= size; i++) { - char t = *((char *)a); - *(((char *)a)++) = *((char *)b); - *(((char *)b)++) = t; + char t = *ac; + *ac++ = *bc; + *bc++ = t; } }