diff options
author | rpj <rpj> | 1998-07-31 02:16:34 +0000 |
---|---|---|
committer | rpj <rpj> | 1998-07-31 02:16:34 +0000 |
commit | cc1a70f50a246ad33ecbc8f73d0bbc67ea89f1a7 (patch) | |
tree | c5126bec2ab25c271ce68abd52542e6a7ad2e6ae /tsd.c | |
parent | 0bc99fb6243a64c6f9a4d503382e9125adeb85a0 (diff) |
Fri Jul 31 00:05:45 1998 Ross Johnson <rpj@ixobrychus.canberra.edu.au>
* tsd.c (pthread_key_create): Update to properly associate
the destructor routine with the key.
* exit.c (_pthread_vacuum): Add call to
_pthread_destructor_pop_all().
Diffstat (limited to 'tsd.c')
-rw-r--r-- | tsd.c | 14 |
1 files changed, 5 insertions, 9 deletions
@@ -12,15 +12,6 @@ pthread_key_create(pthread_key_t *key, void (*destructor)(void *)) { DWORD index; - /* FIXME: the destructor function is ignored for now. This needs to - be managed via the same cleanup handler mechanism as user-define - cleanup handlers during a thread exit. */ - - if (destructor != NULL) - { - return EINVAL; - } - index = TlsAlloc(); if (index == 0xFFFFFFFF) { @@ -30,6 +21,11 @@ pthread_key_create(pthread_key_t *key, void (*destructor)(void *)) /* Only modify the `key' parameter if allocation was successful. */ *key = index; + if (destructor != NULL) + { + return (_pthread_destructor_push(destructor, *key)); + } + return 0; } |