]> pd.if.org Git - pdclib/blobdiff - functions/stdlib/qsort.c
PDCLib includes with quotes, not <>.
[pdclib] / functions / stdlib / qsort.c
index c37760f546fa47a089b913cff22d47e084f7d13f..757cae0f28444a0419a42b823adabc7ddcebda4a 100644 (file)
@@ -1,5 +1,3 @@
-/* $Id$ */
-
 /* qsort( void *, size_t, size_t, int(*)( const void *, const void * ) )
 
    This file is part of the Public Domain C Library (PDCLib).
@@ -34,8 +32,11 @@ static inline void memswp( char * i, char * j, size_t size )
 #define PREPARE_STACK char * stack[STACKSIZE]; char * * stackptr = stack
 #define PUSH( base, limit ) stackptr[0] = base; stackptr[1] = limit; stackptr += 2
 #define POP( base, limit ) stackptr -= 2; base = stackptr[0]; limit = stackptr[1]
-/* TODO: This is platform-dependent */
-#define STACKSIZE 40
+/* TODO: Stack usage is log2( nmemb ) (minus what T shaves off the worst case).
+         Worst-case nmemb is platform dependent and should probably be 
+         configured through _PDCLIB_config.h.
+*/
+#define STACKSIZE 64
 
 void qsort( void * base, size_t nmemb, size_t size, int (*compar)( const void *, const void * ) )
 {
@@ -127,7 +128,7 @@ void qsort( void * base, size_t nmemb, size_t size, int (*compar)( const void *,
 #endif
 
 #ifdef TEST
-#include <_PDCLIB_test.h>
+#include "_PDCLIB_test.h"
 #include <string.h>
 #include <limits.h>
 
@@ -151,7 +152,7 @@ int main( void )
     strcpy( s, presort );
     qsort( s, 1, 1, compare );
     TESTCASE( strcmp( s, presort ) == 0 );
-#if __BSD_VISIBLE
+#if defined(REGTEST) && (__BSD_VISIBLE || __APPLE__)
     puts( "qsort.c: Skipping test #4 for BSD as it goes into endless loop here." );
 #else
     qsort( s, 100, 0, compare );