diff options
Diffstat (limited to 'Python/thread_nt.h')
-rw-r--r-- | Python/thread_nt.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/Python/thread_nt.h b/Python/thread_nt.h index ee2079f..ab5a081 100644 --- a/Python/thread_nt.h +++ b/Python/thread_nt.h @@ -389,11 +389,20 @@ PyThread_delete_key(int key) TlsFree(key); } +/* We must be careful to emulate the strange semantics implemented in thread.c, + * where the value is only set if it hasn't been set before. + */ int PyThread_set_key_value(int key, void *value) { BOOL ok; + void *oldvalue; + assert(value != NULL); + oldvalue = TlsGetValue(key); + if (oldvalue != NULL) + /* ignore value if already set */ + return 0; ok = TlsSetValue(key, value); if (!ok) return -1; |