From b1b25f985a53897c4403e2236c236453ecf5e4b4 Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Thu, 7 Apr 2005 11:28:22 +0000 Subject: Fixed TclpFreeAllocCache() to recognize when being called with NULL argument. This is a signal for it to clean up the tsd key associated with the threading allocator. Part of fixing the Tcl Bug #1178445. --- unix/tclUnixThrd.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/unix/tclUnixThrd.c b/unix/tclUnixThrd.c index ee080ba..bdac40d 100644 --- a/unix/tclUnixThrd.c +++ b/unix/tclUnixThrd.c @@ -927,13 +927,16 @@ TclpFreeAllocMutex(mutex) void TclpFreeAllocCache(ptr) void *ptr; { - extern void TclFreeAllocCache(void *); - - TclFreeAllocCache(ptr); - /* - * Perform proper cleanup of things done in TclpGetAllocCache. - */ - if (initialized) { + if (ptr != NULL) { + /* + * Called by the pthread lib when a thread exits + */ + TclFreeAllocCache(ptr); + } else if (initialized) { + /* + * Called by us in TclFinalizeThreadAlloc() during + * the library finalization initiated from Tcl_Finalize() + */ pthread_key_delete(key); initialized = 0; } -- cgit v0.12