summaryrefslogtreecommitdiffstats
path: root/generic/tclLink.c
diff options
context:
space:
mode:
authordgp@users.sourceforge.net <dgp>2007-05-10 18:23:56 (GMT)
committerdgp@users.sourceforge.net <dgp>2007-05-10 18:23:56 (GMT)
commitf7b479d1d4f6433218dbc16fb603e8551f837ce9 (patch)
treea27ce88390580bc6a5a81c4fe9c1835035a931eb /generic/tclLink.c
parent82bb4033fe5c5d787fd5028753117b856ba5db9c (diff)
downloadtcl-f7b479d1d4f6433218dbc16fb603e8551f837ce9.zip
tcl-f7b479d1d4f6433218dbc16fb603e8551f837ce9.tar.gz
tcl-f7b479d1d4f6433218dbc16fb603e8551f837ce9.tar.bz2
[Tcl Bug 1706140]
* generic/tclCmdMZ.c (Trace*Proc): Update Tcl_VarTraceProcs so * generic/tclLink.c (LinkTraceProc): that they call * generic/tclUtil.c (TclPrecTraceProc): Tcl_InterpDeleted() for themselves, and do not rely on (frequently buggy) setting of the TCL_INTERP_DESTROYED flag by the trace core. * generic/tclVar.c: Update callers of CallVarTraces to not pass in the TCL_INTERP_DESTROYED flag. Also apply filters so that public routines only pass documented flag values down to lower level routines. * generic/tclVar.c (CallVarTraces): The setting of the TCL_INTERP_DESTROYED flag is now done entirely within the CallVarTraces routine, the only place it can be done right.
Diffstat (limited to 'generic/tclLink.c')
-rw-r--r--generic/tclLink.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/generic/tclLink.c b/generic/tclLink.c
index f31ad8e..3cbaebb 100644
--- a/generic/tclLink.c
+++ b/generic/tclLink.c
@@ -13,7 +13,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tclLink.c,v 1.8.2.1 2005/10/23 22:01:30 msofer Exp $
+ * RCS: @(#) $Id: tclLink.c,v 1.8.2.2 2007/05/10 18:23:58 dgp Exp $
*/
#include "tclInt.h"
@@ -250,7 +250,7 @@ LinkTraceProc(clientData, interp, name1, name2, flags)
*/
if (flags & TCL_TRACE_UNSETS) {
- if (flags & TCL_INTERP_DESTROYED) {
+ if (Tcl_InterpDeleted(interp)) {
Tcl_DecrRefCount(linkPtr->varName);
ckfree((char *) linkPtr);
} else if (flags & TCL_TRACE_DESTROYED) {