From baea64e6424278b5df8365e0d04883c5b83707e3 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Tue, 26 May 2015 21:19:23 -0400 Subject: [PATCH] Stack hint should look for 0, not -1, and not care about environment variables. --- include/SDL_hints.h | 3 +-- src/SDL.c | 8 -------- src/thread/pthread/SDL_systhread.c | 5 ++++- test/torturethread.c | 2 -- 4 files changed, 5 insertions(+), 13 deletions(-) diff --git a/include/SDL_hints.h b/include/SDL_hints.h index 69cb8baa4..ebe7baa68 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 75d05a84a..6318bbe6f 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 a6f5b73b0..cdff61f6a 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 116ec09a2..efbab5e32 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++) {