summaryrefslogtreecommitdiff
path: root/Source/Core/Common/Src/Thread.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/Common/Src/Thread.cpp')
-rw-r--r--Source/Core/Common/Src/Thread.cpp9
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);
}