diff options
| -rw-r--r-- | ChangeLog | 5 | ||||
| -rw-r--r-- | exit.c | 6 | 
2 files changed, 9 insertions, 2 deletions
| @@ -1,3 +1,8 @@ +1999-08-14  Ross Johnson  <rpj@ixobrychus.canberra.edu.au> + +	* exit.c (pthread_exit): Don't call pthread_self() but +	get thread handle directly for efficiency. +	  1999-08-12  Ross Johnson  <rpj@ixobrychus.canberra.edu.au>  	* private.c (_pthread_threadStart): ei[] only declared if _MSC_VER. @@ -51,7 +51,7 @@ pthread_exit (void *value_ptr)        * ------------------------------------------------------        */  { -  pthread_t self = pthread_self(); +  pthread_t self;    /* If the current thread is implicit it was not started through       pthread_create(), therefore we cleanup and end the thread @@ -60,7 +60,9 @@ pthread_exit (void *value_ptr)       which will cleanup and end the thread for us.     */ -  if (self->implicit) +  self = (pthread_t) pthread_getspecific (_pthread_selfThreadKey); + +  if (self == NULL || self->implicit)      {        _pthread_callUserDestroyRoutines(self); | 
