summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorvasiljevic <zv@archiware.com>2004-07-19 19:23:02 (GMT)
committervasiljevic <zv@archiware.com>2004-07-19 19:23:02 (GMT)
commit48736811b83b5c70f8e77e05cf69ab9ae173bb5d (patch)
treea3a134598c9acd3e0761b5c99b3f979dbc17b839
parentd03d0ed2481529c1670ed26cee493f9c6abffb40 (diff)
downloadtcl-48736811b83b5c70f8e77e05cf69ab9ae173bb5d.zip
tcl-48736811b83b5c70f8e77e05cf69ab9ae173bb5d.tar.gz
tcl-48736811b83b5c70f8e77e05cf69ab9ae173bb5d.tar.bz2
Redefined MASTER_LOCK to call TclpMasterLock for the sake of Tcl API
users never creating interpreters.
-rw-r--r--ChangeLog5
-rw-r--r--win/tclWinThrd.c10
2 files changed, 11 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index a39b0b6..90237ed 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2004-07-19 Zoran Vasiljevic <vasiljevic@users.sf.net>
+
+ * win/tclwinThrd.c: redefined MASTER_LOCK to call
+ TclpMasterLock. Fixes Bug #987967
+
2004-07-16 Andreas Kupries <andreask@activestate.com>
* generic/tclIOCmd.c (Tcl_FcopyObjCmd): Corrected a typo in the
diff --git a/win/tclWinThrd.c b/win/tclWinThrd.c
index f7fe507..4f0caac 100644
--- a/win/tclWinThrd.c
+++ b/win/tclWinThrd.c
@@ -9,7 +9,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tclWinThrd.c,v 1.24.2.6 2004/06/22 11:55:36 vasiljevic Exp $
+ * RCS: @(#) $Id: tclWinThrd.c,v 1.24.2.7 2004/07/19 19:23:03 vasiljevic Exp $
*/
#include "tclWinInt.h"
@@ -25,8 +25,9 @@
static CRITICAL_SECTION masterLock;
static int init = 0;
-#define MASTER_LOCK EnterCriticalSection(&masterLock)
-#define MASTER_UNLOCK LeaveCriticalSection(&masterLock)
+#define MASTER_LOCK TclpMasterLock()
+#define MASTER_UNLOCK TclpMasterUnlock()
+
/*
* This is the master lock used to serialize initialization and finalization
@@ -427,13 +428,14 @@ TclFinalizeLock ()
{
MASTER_LOCK;
DeleteCriticalSection(&joinLock);
+ /* Destroy the critical section that we are holding! */
DeleteCriticalSection(&masterLock);
init = 0;
#ifdef TCL_THREADS
DeleteCriticalSection(&allocLock);
allocOnce = 0;
#endif
- /* Destroy the critical section that we are holding. */
+ /* Destroy the critical section that we are holding! */
DeleteCriticalSection(&initLock);
}