From cc1a70f50a246ad33ecbc8f73d0bbc67ea89f1a7 Mon Sep 17 00:00:00 2001 From: rpj Date: Fri, 31 Jul 1998 02:16:34 +0000 Subject: Fri Jul 31 00:05:45 1998 Ross Johnson * 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(). --- tsd.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) (limited to 'tsd.c') diff --git a/tsd.c b/tsd.c index 611ed5f..4a83fd9 100644 --- a/tsd.c +++ b/tsd.c @@ -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; } -- cgit v1.2.3