From 2bfe7ce3694d0ad25a70d5617eb715182e6dc0c4 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Thu, 8 Aug 2013 12:21:26 -0700 Subject: [PATCH] Fixed crash if SDL_GetThreadName() is passed a NULL thread. --- src/thread/SDL_thread.c | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/thread/SDL_thread.c b/src/thread/SDL_thread.c index 7dc182865..5eaed0c0c 100644 --- a/src/thread/SDL_thread.c +++ b/src/thread/SDL_thread.c @@ -319,7 +319,9 @@ SDL_CreateThread(int (SDLCALL * fn) (void *), args = (thread_args *) SDL_malloc(sizeof(*args)); if (args == NULL) { SDL_OutOfMemory(); - SDL_free(thread->name); + if (thread->name) { + SDL_free(thread->name); + } SDL_free(thread); return (NULL); } @@ -328,7 +330,9 @@ SDL_CreateThread(int (SDLCALL * fn) (void *), args->info = thread; args->wait = SDL_CreateSemaphore(0); if (args->wait == NULL) { - SDL_free(thread->name); + if (thread->name) { + SDL_free(thread->name); + } SDL_free(thread); SDL_free(args); return (NULL); @@ -345,7 +349,9 @@ SDL_CreateThread(int (SDLCALL * fn) (void *), SDL_SemWait(args->wait); } else { /* Oops, failed. Gotta free everything */ - SDL_free(thread->name); + if (thread->name) { + SDL_free(thread->name); + } SDL_free(thread); thread = NULL; } @@ -372,7 +378,11 @@ SDL_GetThreadID(SDL_Thread * thread) const char * SDL_GetThreadName(SDL_Thread * thread) { - return thread->name; + if (thread) { + return thread->name; + } else { + return NULL; + } } int @@ -389,7 +399,9 @@ SDL_WaitThread(SDL_Thread * thread, int *status) if (status) { *status = thread->status; } - SDL_free(thread->name); + if (thread->name) { + SDL_free(thread->name); + } SDL_free(thread); } }