summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoe Mistachkin <joe@mistachkin.com>2012-07-20 01:53:09 (GMT)
committerJoe Mistachkin <joe@mistachkin.com>2012-07-20 01:53:09 (GMT)
commitc44efa8c2c21a81bb9065146ef464de6b88e0262 (patch)
tree71eabc9824f21dec8bc82f86a14bbf91d14f9c0f
parent0d435ca01df07d055e04b8dcd1e3864438bb6d06 (diff)
parentb21d13ee199f28daaeb3a66120cdd34791b860da (diff)
downloadtcl-c44efa8c2c21a81bb9065146ef464de6b88e0262.zip
tcl-c44efa8c2c21a81bb9065146ef464de6b88e0262.tar.gz
tcl-c44efa8c2c21a81bb9065146ef464de6b88e0262.tar.bz2
Fix several more missing mutex-locks in TestasyncCmd.
-rw-r--r--ChangeLog11
-rw-r--r--generic/tclTest.c5
2 files changed, 16 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 427b3e4..5c8c50a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2012-07-19 Joe Mistachkin <joe@mistachkin.com>
+
+ * generic/tclTest.c: Fix several more missing mutex-locks in
+ TestasyncCmd.
+
+2012-07-19 Alexandre Ferrieux <ferrieux@users.sourceforge.net>
+
+ * generic/tclTest.c: [Bug 3544685]: Missing mutex-lock in
+ TestasyncCmd since 2011-08-19. Unbounded gratitude to Stuart
+ Cassoff for spotting it.
+
2012-07-17 Jan Nijtmans <nijtmans@users.sf.net>
* win/makefile.vc: [Bug 3544932]: Visual studio compiler check fails
diff --git a/generic/tclTest.c b/generic/tclTest.c
index 3f06be0..bf75a0f 100644
--- a/generic/tclTest.c
+++ b/generic/tclTest.c
@@ -870,6 +870,7 @@ TestasyncCmd(
|| (Tcl_GetInt(interp, argv[4], &code) != TCL_OK)) {
return TCL_ERROR;
}
+ Tcl_MutexLock(&asyncTestMutex);
for (asyncPtr = firstHandler; asyncPtr != NULL;
asyncPtr = asyncPtr->nextPtr) {
if (asyncPtr->id == id) {
@@ -878,6 +879,7 @@ TestasyncCmd(
}
}
Tcl_SetObjResult(interp, Tcl_NewStringObj(argv[3], -1));
+ Tcl_MutexUnlock(&asyncTestMutex);
return code;
#ifdef TCL_THREADS
} else if (strcmp(argv[1], "marklater") == 0) {
@@ -887,6 +889,7 @@ TestasyncCmd(
if (Tcl_GetInt(interp, argv[2], &id) != TCL_OK) {
return TCL_ERROR;
}
+ Tcl_MutexLock(&asyncTestMutex);
for (asyncPtr = firstHandler; asyncPtr != NULL;
asyncPtr = asyncPtr->nextPtr) {
if (asyncPtr->id == id) {
@@ -895,11 +898,13 @@ TestasyncCmd(
INT2PTR(id), TCL_THREAD_STACK_DEFAULT,
TCL_THREAD_NOFLAGS) != TCL_OK) {
Tcl_SetResult(interp, "can't create thread", TCL_STATIC);
+ Tcl_MutexUnlock(&asyncTestMutex);
return TCL_ERROR;
}
break;
}
}
+ Tcl_MutexUnlock(&asyncTestMutex);
} else {
Tcl_AppendResult(interp, "bad option \"", argv[1],
"\": must be create, delete, int, mark, or marklater", NULL);