From 21de119c68926838b94844a80df49e9fe67d5697 Mon Sep 17 00:00:00 2001 From: fincs Date: Sun, 4 Aug 2019 21:03:04 +0200 Subject: [PATCH] Run TLS destructor after clearing TLS value, as per standard --- nx/source/kernel/thread.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/nx/source/kernel/thread.c b/nx/source/kernel/thread.c index 8f5b223d..5ac1ea82 100644 --- a/nx/source/kernel/thread.c +++ b/nx/source/kernel/thread.c @@ -144,9 +144,10 @@ void threadExit(void) { if (!(tls_mask & ((UINT64_C(1) << i)))) continue; if (t->tls_array[i]) { - if (g_tlsDestructors[i]) - g_tlsDestructors[i](t->tls_array[i]); + void* old_value = t->tls_array[i]; t->tls_array[i] = NULL; + if (g_tlsDestructors[i]) + g_tlsDestructors[i](old_value); } }