Don't crash with a NULL thread name.
This commit is contained in:
parent
3d70224c40
commit
b5692bd236
3 changed files with 26 additions and 21 deletions
|
@ -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)
|
||||||
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)
|
||||||
#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,6 +161,7 @@ typedef struct tagTHREADNAME_INFO
|
||||||
void
|
void
|
||||||
SDL_SYS_SetupThread(const char *name)
|
SDL_SYS_SetupThread(const char *name)
|
||||||
{
|
{
|
||||||
|
if (name != NULL) {
|
||||||
#if 0 /* !!! FIXME: __except needs C runtime, which we don't link against. */
|
#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? */
|
#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. */
|
||||||
|
@ -181,6 +182,7 @@ SDL_SYS_SetupThread(const char *name)
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
SDL_threadID
|
SDL_threadID
|
||||||
SDL_ThreadID(void)
|
SDL_ThreadID(void)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue