From edfc996830c6e0da9c0e9875e28ccfb6e5fe0fdb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Fri, 17 May 2019 17:46:49 +0200 Subject: [PATCH] pthread_key: set value planned for destruction to NULL. * This fixes bug fix #10951. Change-Id: I152cea3651b3307171ea4d6a0c49aceae2f0f797 Reviewed-on: https://review.haiku-os.org/c/1456 Reviewed-by: Rene Gollent --- src/system/libroot/posix/pthread/pthread_key.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/system/libroot/posix/pthread/pthread_key.cpp b/src/system/libroot/posix/pthread/pthread_key.cpp index 431a4d4481..be251f71f1 100644 --- a/src/system/libroot/posix/pthread/pthread_key.cpp +++ b/src/system/libroot/posix/pthread/pthread_key.cpp @@ -35,7 +35,7 @@ get_key_destructor(uint32 key, int32& sequence) /*! Function to get the thread specific value of a key in a lockless - way. + way. The thread specific value is reset to NULL. \a sequence must be the sequence of the key table that this value has to fit to. */ @@ -54,6 +54,8 @@ get_key_value(pthread_thread* thread, uint32 key, int32 sequence) value = keyData.value; } while (specificSequence != sequence); + keyData.value = NULL; + return value; }