Index: linuxthreads/specific.c =================================================================== RCS file: /cvs/glibc/libc/linuxthreads/specific.c,v retrieving revision 1.19 diff -u -1 -b -p -u -r1.19 specific.c --- linuxthreads/specific.c 19 Feb 2003 23:59:44 -0000 1.19 +++ linuxthreads/specific.c 22 Jul 2003 11:49:15 -0000 @@ -93,2 +93,3 @@ int pthread_key_delete(pthread_key_t key pthread_descr self = thread_self(); + struct pthread_key_delete_helper_args args; @@ -106,8 +107,4 @@ int pthread_key_delete(pthread_key_t key - Do nothing if no threads have been created yet. */ - - if (__pthread_manager_request != -1) - { - struct pthread_key_delete_helper_args args; - struct pthread_request request; + Ask thread manager to do this for us or if it doesn't exist do + it our self (for the main thread). */ @@ -115,4 +112,7 @@ int pthread_key_delete(pthread_key_t key args.idx2nd = key % PTHREAD_KEY_2NDLEVEL_SIZE; - args.self = 0; + if (__pthread_manager_request != -1) { + struct pthread_request request; + + args.self = 0; request.req_thread = self; @@ -125,2 +125,5 @@ int pthread_key_delete(pthread_key_t key suspend(self); + } else { + args.self = self; + pthread_key_delete_helper((void*) &request, self); }