comparison src/stdlib/SDL_qsort.c @ 1456:84de7511f79f

Fixed a bunch of 64-bit compatibility problems
author Sam Lantinga <slouken@libsdl.org>
date Wed, 01 Mar 2006 09:43:47 +0000
parents d910939febfa
children 782fd950bd46 c121d94672cb 5bacec0933f5
comparison
equal deleted inserted replaced
1455:f487bb150acc 1456:84de7511f79f
261 261
262 /* ---------------------------------------------------------------------- */ 262 /* ---------------------------------------------------------------------- */
263 263
264 static char * pivot_big(char *first, char *mid, char *last, size_t size, 264 static char * pivot_big(char *first, char *mid, char *last, size_t size,
265 int compare(const void *, const void *)) { 265 int compare(const void *, const void *)) {
266 int d=(((last-first)/size)>>3)*size; 266 size_t d=(((last-first)/size)>>3)*size;
267 char *m1,*m2,*m3; 267 char *m1,*m2,*m3;
268 { char *a=first, *b=first+d, *c=first+2*d; 268 { char *a=first, *b=first+d, *c=first+2*d;
269 #ifdef DEBUG_QSORT 269 #ifdef DEBUG_QSORT
270 fprintf(stderr,"< %d %d %d\n",*(int*)a,*(int*)b,*(int*)c); 270 fprintf(stderr,"< %d %d %d\n",*(int*)a,*(int*)b,*(int*)c);
271 #endif 271 #endif
412 412
413 void qsort(void *base, size_t nmemb, size_t size, 413 void qsort(void *base, size_t nmemb, size_t size,
414 int (*compare)(const void *, const void *)) { 414 int (*compare)(const void *, const void *)) {
415 415
416 if (nmemb<=1) return; 416 if (nmemb<=1) return;
417 if (((int)base|size)&(WORD_BYTES-1)) 417 if (((uintptr_t)base|size)&(WORD_BYTES-1))
418 qsort_nonaligned(base,nmemb,size,compare); 418 qsort_nonaligned(base,nmemb,size,compare);
419 else if (size!=WORD_BYTES) 419 else if (size!=WORD_BYTES)
420 qsort_aligned(base,nmemb,size,compare); 420 qsort_aligned(base,nmemb,size,compare);
421 else 421 else
422 qsort_words(base,nmemb,compare); 422 qsort_words(base,nmemb,compare);