summaryrefslogtreecommitdiffstats
path: root/generic/tclLink.c
diff options
context:
space:
mode:
authordgp <dgp@users.sourceforge.net>2007-05-07 19:45:32 (GMT)
committerdgp <dgp@users.sourceforge.net>2007-05-07 19:45:32 (GMT)
commitda6c10f827c3825c5cdd1f0f8d1af2acba0a0ef3 (patch)
tree29ed64b0e7e0caaaf8f2c0f26ced6a0aaa35d4fa /generic/tclLink.c
parent95748a33387880fba794dc3e9db352a218b1f84e (diff)
downloadtcl-da6c10f827c3825c5cdd1f0f8d1af2acba0a0ef3.zip
tcl-da6c10f827c3825c5cdd1f0f8d1af2acba0a0ef3.tar.gz
tcl-da6c10f827c3825c5cdd1f0f8d1af2acba0a0ef3.tar.bz2
[Tcl Bug 1706140]
* generic/tclLink.c (LinkTraceProc): Update Tcl_VarTraceProcs so that * generic/tclNamesp.c (Error*Read): they call Tcl_InterpDeleted() * generic/tclTrace.c (Trace*Proc): for themselves, and do not rely * generic/tclUtil.c (TclPrecTraceProc): on (frequently buggy) setting of the TCL_INTERP_DESTROYED flag by the trace core. * generic/tclVar.c: Update callers of TclCallVarTraces 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/tclTrace.c (TclCallVarTraces): The setting of the TCL_INTERP_DESTROYED flag is now done entirely within the TclCallVarTraces 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 8d3bc1a..0f33c03 100644
--- a/generic/tclLink.c
+++ b/generic/tclLink.c
@@ -12,7 +12,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.21 2007/04/10 14:47:16 dkf Exp $
+ * RCS: @(#) $Id: tclLink.c,v 1.22 2007/05/07 19:45:33 dgp Exp $
*/
#include "tclInt.h"
@@ -262,7 +262,7 @@ LinkTraceProc(
*/
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) {