diff options
Diffstat (limited to 'Source/Core/Common/Src/Thread.cpp')
| -rw-r--r-- | Source/Core/Common/Src/Thread.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/Source/Core/Common/Src/Thread.cpp b/Source/Core/Common/Src/Thread.cpp index 37f52e9ce9..87522a87f6 100644 --- a/Source/Core/Common/Src/Thread.cpp +++ b/Source/Core/Common/Src/Thread.cpp @@ -416,7 +416,14 @@ void SleepCurrentThread(int ms) void SetCurrentThreadName(const TCHAR* szThreadName) { - pthread_setspecific(threadname_key, strdup(szThreadName)); + char *name = strdup(szThreadName); + // pthread_setspecific returns 0 on success + // free the string from strdup if fails + // creates a memory leak if it actually doesn't fail + // since we don't delete it once we delete the thread + // we are using a single threadname_key anyway for all threads + if(!pthread_setspecific(threadname_key, strdup(szThreadName))) + free(name); INFO_LOG(COMMON, "%s(%s)\n", __FUNCTION__, szThreadName); } |
