diff options
| author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2016-10-11 21:52:57 (GMT) |
|---|---|---|
| committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2016-10-11 21:52:57 (GMT) |
| commit | 7dd13b72b6620cba05c004b954ea3df251420910 (patch) | |
| tree | 4a830dcdd04884ee7552dabfd033c6428ec70f0f /unix/tclUnixThrd.c | |
| parent | 11e9b6a9a5b0d4c50831216c87d9357518e71a30 (diff) | |
| parent | 54c0881e9d6deab242839da14f2f4d3dfe05df5b (diff) | |
| download | tcl-7dd13b72b6620cba05c004b954ea3df251420910.zip tcl-7dd13b72b6620cba05c004b954ea3df251420910.tar.gz tcl-7dd13b72b6620cba05c004b954ea3df251420910.tar.bz2 | |
Fix [3cc1d91345]: duplicate calls to TclpFreeAllocCache() on thread exists
Diffstat (limited to 'unix/tclUnixThrd.c')
| -rw-r--r-- | unix/tclUnixThrd.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/unix/tclUnixThrd.c b/unix/tclUnixThrd.c index 8f8eb7f..7394545 100644 --- a/unix/tclUnixThrd.c +++ b/unix/tclUnixThrd.c @@ -712,7 +712,7 @@ void TclpInitAllocCache(void) { pthread_mutex_lock(allocLockPtr); - pthread_key_create(&key, TclpFreeAllocCache); + pthread_key_create(&key, NULL); pthread_mutex_unlock(allocLockPtr); } @@ -722,13 +722,19 @@ TclpFreeAllocCache( { if (ptr != NULL) { /* - * Called by the pthread lib when a thread exits + * Called by TclFinalizeThreadAllocThread() during the thread + * finalization initiated from Tcl_FinalizeThread() */ TclFreeAllocCache(ptr); pthread_setspecific(key, NULL); } else { + /* + * Called by TclFinalizeThreadAlloc() during the process + * finalization initiated from Tcl_Finalize() + */ + pthread_key_delete(key); } } |
