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;  } | 
