From bd9c6989c20ea40cc12dd54105ec708c4b28beaa Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Wed, 6 Jun 2018 23:10:37 -0700 Subject: Clear the TLS pointer after running its destructor callback --- common/threads.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'common/threads.c') diff --git a/common/threads.c b/common/threads.c index 2655a244..6cfe383b 100644 --- a/common/threads.c +++ b/common/threads.c @@ -428,7 +428,11 @@ void althrd_thread_detach(void) { void *ptr = altss_get(TlsDestructors.keys[i]); altss_dtor_t callback = (altss_dtor_t)TlsDestructors.values[i]; - if(ptr && callback) callback(ptr); + if(ptr) + { + if(callback) callback(ptr); + altss_set(TlsDestructors.keys[i], NULL); + } } UnlockUIntMapRead(&TlsDestructors); } -- cgit v1.2.3