qsort patch from Paul Eggert
svn: r2252
This commit is contained in:
parent
047b1e8f48
commit
73fb3d2bac
|
@ -1,25 +1,31 @@
|
||||||
|
|
||||||
#if defined(sparc) || defined(__sparc) || defined(__sparc__)
|
#if defined(sun) || defined(__sun) || defined(__sun__)
|
||||||
/* Sun's qsort() is broken. */
|
/* Sun's qsort() is broken. */
|
||||||
|
|
||||||
#define MAXSTACK 100
|
#define MAXSTACK 100
|
||||||
|
|
||||||
static void exchange(void *a, void *b, size_t size) {
|
static void exchange(void *a, void *b, size_t size) {
|
||||||
size_t i;
|
size_t i;
|
||||||
|
int *ai = (int *) a;
|
||||||
|
int *bi = (int *) b;
|
||||||
|
char *ac;
|
||||||
|
char *bc;
|
||||||
|
|
||||||
/******************
|
/******************
|
||||||
* exchange a,b *
|
* exchange a,b *
|
||||||
******************/
|
******************/
|
||||||
|
|
||||||
for (i = sizeof(int); i <= size; i += sizeof(int)) {
|
for (i = sizeof(int); i <= size; i += sizeof(int)) {
|
||||||
int t = *((int *)a);
|
int t = *ai;
|
||||||
*(((int *)a)++) = *((int *)b);
|
*ai++ = *bi;
|
||||||
*(((int *)b)++) = t;
|
*bi++ = t;
|
||||||
}
|
}
|
||||||
|
ac = (char *) ai;
|
||||||
|
bc = (char *) bi;
|
||||||
for (i = i - sizeof(int) + 1; i <= size; i++) {
|
for (i = i - sizeof(int) + 1; i <= size; i++) {
|
||||||
char t = *((char *)a);
|
char t = *ac;
|
||||||
*(((char *)a)++) = *((char *)b);
|
*ac++ = *bc;
|
||||||
*(((char *)b)++) = t;
|
*bc++ = t;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user