From 8da0b58aaaeaa6e00b6b05e9c68d692bcf8bfffa Mon Sep 17 00:00:00 2001 From: jas0n098 <21629908+jas0n098@users.noreply.github.com> Date: Tue, 3 Feb 2026 08:58:22 +0000 Subject: [PATCH] Fix thread names being set to garbage (#3985) SetThreadName gets passed an std::string's c_str whose pointer gets invalidated by the assignment of g_curthread->name, resulting in broken thread names further down the line --- src/common/thread.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/common/thread.cpp b/src/common/thread.cpp index d6daaa852..e56953fb6 100644 --- a/src/common/thread.cpp +++ b/src/common/thread.cpp @@ -175,7 +175,7 @@ bool AccurateSleep(const std::chrono::nanoseconds duration, std::chrono::nanosec // Sets the debugger-visible name of the current thread. void SetCurrentThreadName(const char* name) { if (Libraries::Kernel::g_curthread) { - Libraries::Kernel::g_curthread->name = std::string{name}; + Libraries::Kernel::g_curthread->name = name; } SetThreadDescription(GetCurrentThread(), UTF8ToUTF16W(name).data()); } @@ -190,7 +190,7 @@ void SetThreadName(void* thread, const char* name) { #if !defined(_WIN32) || defined(_MSC_VER) void SetCurrentThreadName(const char* name) { if (Libraries::Kernel::g_curthread) { - Libraries::Kernel::g_curthread->name = std::string{name}; + Libraries::Kernel::g_curthread->name = name; } #ifdef __APPLE__ pthread_setname_np(name); @@ -219,7 +219,7 @@ void SetThreadName(void* thread, const char* name) { #if defined(_WIN32) void SetCurrentThreadName(const char*) { if (Libraries::Kernel::g_curthread) { - Libraries::Kernel::g_curthread->name = std::string{name}; + Libraries::Kernel::g_curthread->name = name; } // Do Nothing on MinGW }