Commit b5692bd2 authored by Ryan C. Gordon's avatar Ryan C. Gordon

Don't crash with a NULL thread name.

parent 3d70224c
...@@ -66,8 +66,9 @@ int ...@@ -66,8 +66,9 @@ int
SDL_SYS_CreateThread(SDL_Thread * thread, void *args) SDL_SYS_CreateThread(SDL_Thread * thread, void *args)
{ {
/* The docs say the thread name can't be longer than B_OS_NAME_LENGTH. */ /* The docs say the thread name can't be longer than B_OS_NAME_LENGTH. */
const char *threadname = thread->name ? thread->name : "SDL Thread";
char name[B_OS_NAME_LENGTH]; char name[B_OS_NAME_LENGTH];
SDL_snprintf(name, sizeof (name), "%s", thread->name); SDL_snprintf(name, sizeof (name), "%s", threadname);
name[sizeof (name) - 1] = '\0'; name[sizeof (name) - 1] = '\0';
/* Create the thread and go! */ /* Create the thread and go! */
......
...@@ -82,6 +82,7 @@ SDL_SYS_SetupThread(const char *name) ...@@ -82,6 +82,7 @@ SDL_SYS_SetupThread(const char *name)
int i; int i;
sigset_t mask; sigset_t mask;
if (name != NULL) {
#if ( (__MACOSX__ && (MAC_OS_X_VERSION_MAX_ALLOWED >= 1060)) || \ #if ( (__MACOSX__ && (MAC_OS_X_VERSION_MAX_ALLOWED >= 1060)) || \
(__IPHONEOS__ && (__IPHONE_OS_VERSION_MAX_ALLOWED >= 30200)) ) (__IPHONEOS__ && (__IPHONE_OS_VERSION_MAX_ALLOWED >= 30200)) )
if (pthread_setname_np != NULL) { pthread_setname_np(name); } if (pthread_setname_np != NULL) { pthread_setname_np(name); }
...@@ -90,6 +91,7 @@ SDL_SYS_SetupThread(const char *name) ...@@ -90,6 +91,7 @@ SDL_SYS_SetupThread(const char *name)
#elif HAVE_PTHREAD_SET_NAME_NP #elif HAVE_PTHREAD_SET_NAME_NP
pthread_set_name_np(pthread_self(), name); pthread_set_name_np(pthread_self(), name);
#endif #endif
}
/* Mask asynchronous signals for this thread */ /* Mask asynchronous signals for this thread */
sigemptyset(&mask); sigemptyset(&mask);
......
...@@ -161,8 +161,9 @@ typedef struct tagTHREADNAME_INFO ...@@ -161,8 +161,9 @@ typedef struct tagTHREADNAME_INFO
void void
SDL_SYS_SetupThread(const char *name) SDL_SYS_SetupThread(const char *name)
{ {
#if 0 /* !!! FIXME: __except needs C runtime, which we don't link against. */ if (name != NULL) {
#ifdef _MSC_VER /* !!! FIXME: can we do SEH on other compilers yet? */ #if 0 /* !!! FIXME: __except needs C runtime, which we don't link against. */
#ifdef _MSC_VER /* !!! FIXME: can we do SEH on other compilers yet? */
/* This magic tells the debugger to name a thread if it's listening. */ /* This magic tells the debugger to name a thread if it's listening. */
THREADNAME_INFO inf; THREADNAME_INFO inf;
inf.dwType = 0x1000; inf.dwType = 0x1000;
...@@ -178,8 +179,9 @@ SDL_SYS_SetupThread(const char *name) ...@@ -178,8 +179,9 @@ SDL_SYS_SetupThread(const char *name)
{ {
/* The program itself should ignore this bogus exception. */ /* The program itself should ignore this bogus exception. */
} }
#endif #endif
#endif #endif
}
} }
SDL_threadID SDL_threadID
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment