Commit baea64e6424278b5df8365e0d04883c5b83707e3

Ryan C. Gordon 2015-05-26T21:19:23

Stack hint should look for 0, not -1, and not care about environment variables.

diff --git a/include/SDL_hints.h b/include/SDL_hints.h
index 69cb8ba..ebe7baa 100644
--- a/include/SDL_hints.h
+++ b/include/SDL_hints.h
@@ -350,13 +350,12 @@ extern "C" {
 
 
 /**
-*  \brief  A string specifying SDL's threads stack size in bytes or "-1" for the backend's default size
+*  \brief  A string specifying SDL's threads stack size in bytes or "0" for the backend's default size
 *
 *  Use this hint in case you need to set SDL's threads stack size to other than the default.
 *  This is specially useful if you build SDL against a non glibc libc library (such as musl) which
 *  provides a relatively small default thread stack size (a few kilobytes versus the default 8MB glibc uses).
 *  Support for this hint is currenly available only in the pthread backend.
-*  As a precaution, this hint can not be set via an environment variable.
 */
 #define SDL_HINT_THREAD_STACK_SIZE              "SDL_THREAD_STACK_SIZE"
 
diff --git a/src/SDL.c b/src/SDL.c
index 75d05a8..6318bbe 100644
--- a/src/SDL.c
+++ b/src/SDL.c
@@ -107,7 +107,6 @@ SDL_SetMainReady(void)
 int
 SDL_InitSubSystem(Uint32 flags)
 {
-    static Uint32 hints_initialized = SDL_FALSE;
     if (!SDL_MainIsReady) {
         SDL_SetError("Application didn't initialize properly, did you include SDL_main.h in the file containing your main() function?");
         return -1;
@@ -115,13 +114,6 @@ SDL_InitSubSystem(Uint32 flags)
 
     /* Clear the error message */
     SDL_ClearError();
-    
-    if (hints_initialized == SDL_FALSE) {
-        /* Set a default of -1 for SDL_HINT_THREAD_STACK_SIZE to prevent the
-           end user from interfering it's value with environment variables */
-        SDL_SetHintWithPriority(SDL_HINT_THREAD_STACK_SIZE, "-1", SDL_HINT_OVERRIDE);
-        hints_initialized = SDL_TRUE;
-    }
 
 #if SDL_VIDEO_DRIVER_WINDOWS
 	if ((flags & (SDL_INIT_HAPTIC|SDL_INIT_JOYSTICK))) {
diff --git a/src/thread/pthread/SDL_systhread.c b/src/thread/pthread/SDL_systhread.c
index a6f5b73..cdff61f 100644
--- a/src/thread/pthread/SDL_systhread.c
+++ b/src/thread/pthread/SDL_systhread.c
@@ -111,7 +111,10 @@ SDL_SYS_CreateThread(SDL_Thread * thread, void *args)
     
     /* If the SDL_HINT_THREAD_STACK_SIZE exists and it seems to be a positive number, use it */
     if (hint && hint[0] >= '0' && hint[0] <= '9') {
-        pthread_attr_setstacksize(&type, (size_t)SDL_atoi(hint));
+        const size_t stacksize = (size_t) SDL_atoi(hint);
+        if (stacksize > 0) {
+            pthread_attr_setstacksize(&type, );
+        }
     }
     
     pthread_attr_getstacksize(&type, &ss);
diff --git a/test/torturethread.c b/test/torturethread.c
index 116ec09..efbab5e 100644
--- a/test/torturethread.c
+++ b/test/torturethread.c
@@ -87,8 +87,6 @@ main(int argc, char *argv[])
         SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't initialize SDL: %s\n", SDL_GetError());
         return (1);
     }
-    
-    SDL_SetHintWithPriority(SDL_HINT_THREAD_STACK_SIZE, SDL_getenv(SDL_HINT_THREAD_STACK_SIZE), SDL_HINT_OVERRIDE);
 
     signal(SIGSEGV, SIG_DFL);
     for (i = 0; i < NUMTHREADS; i++) {