From 4cdbe0b957abf6b665fe87aa9705f7c0976df534 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Rydg=C3=A5rd?= Date: Thu, 9 Mar 2017 14:46:42 +0100 Subject: [PATCH] Fix an ancient bug in sceKernelExitDeleteThread --- Core/HLE/sceKernelThread.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Core/HLE/sceKernelThread.cpp b/Core/HLE/sceKernelThread.cpp index 3f049f86f3..29a0168df6 100644 --- a/Core/HLE/sceKernelThread.cpp +++ b/Core/HLE/sceKernelThread.cpp @@ -2149,6 +2149,8 @@ void sceKernelExitDeleteThread(int exitStatus) if (thread) { INFO_LOG(SCEKERNEL,"sceKernelExitDeleteThread(%d)", exitStatus); + uint32_t thread_attr = thread->nt.attr; + uint32_t uid = thread->GetUID(); __KernelDeleteThread(currentThread, exitStatus, "thread exited with delete"); // Temporary hack since we don't reschedule within callbacks. g_inCbCount = 0; @@ -2156,7 +2158,7 @@ void sceKernelExitDeleteThread(int exitStatus) hleReSchedule("thread exited with delete"); // TODO: This should trigger ON the thread when it exits. - __KernelThreadTriggerEvent((thread->nt.attr & PSP_THREAD_ATTR_KERNEL) != 0, thread->GetUID(), THREADEVENT_EXIT); + __KernelThreadTriggerEvent((thread_attr & PSP_THREAD_ATTR_KERNEL) != 0, uid, THREADEVENT_EXIT); } else ERROR_LOG_REPORT(SCEKERNEL, "sceKernelExitDeleteThread(%d) ERROR - could not find myself!", exitStatus);