summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2016-10-11 21:35:27 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2016-10-11 21:35:27 (GMT)
commitc20fffb1c16d1b8a7ed25de25f292df6297d176f (patch)
tree854ff813d51954ea09e78528d3bdc7506874c31d
parent30167250619d18f94b8b003d07734e58d8777f87 (diff)
downloadtcl-c20fffb1c16d1b8a7ed25de25f292df6297d176f.zip
tcl-c20fffb1c16d1b8a7ed25de25f292df6297d176f.tar.gz
tcl-c20fffb1c16d1b8a7ed25de25f292df6297d176f.tar.bz2
Fix [3cc1d91345]: duplicate calls to TclpFreeAllocCache() on thread exists
-rw-r--r--unix/tclUnixInit.c2
-rw-r--r--unix/tclUnixThrd.c7
2 files changed, 5 insertions, 4 deletions
diff --git a/unix/tclUnixInit.c b/unix/tclUnixInit.c
index a8cd00d..a873f6e 100644
--- a/unix/tclUnixInit.c
+++ b/unix/tclUnixInit.c
@@ -833,7 +833,7 @@ TclpSetVariables(
CFLocaleRef localeRef;
- if (CFLocaleCopyCurrent != NULL && CFLocaleGetIdentifier != NULL &&
+ if (&CFLocaleCopyCurrent != NULL && &CFLocaleGetIdentifier != NULL &&
(localeRef = CFLocaleCopyCurrent())) {
CFStringRef locale = CFLocaleGetIdentifier(localeRef);
diff --git a/unix/tclUnixThrd.c b/unix/tclUnixThrd.c
index a7a294d..1841242 100644
--- a/unix/tclUnixThrd.c
+++ b/unix/tclUnixThrd.c
@@ -810,7 +810,8 @@ 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);
@@ -818,7 +819,7 @@ TclpFreeAllocCache(
} else if (initialized) {
/*
- * Called by us in TclFinalizeThreadAlloc() during the library
+ * Called by TclFinalizeThreadAlloc() during the process
* finalization initiated from Tcl_Finalize()
*/
@@ -833,7 +834,7 @@ TclpGetAllocCache(void)
if (!initialized) {
pthread_mutex_lock(allocLockPtr);
if (!initialized) {
- pthread_key_create(&key, TclpFreeAllocCache);
+ pthread_key_create(&key, NULL);
initialized = 1;
}
pthread_mutex_unlock(allocLockPtr);