diff options
author | dgp <dgp@users.sourceforge.net> | 2007-05-10 18:23:56 (GMT) |
---|---|---|
committer | dgp <dgp@users.sourceforge.net> | 2007-05-10 18:23:56 (GMT) |
commit | 9ed1dc8ae2008e5197622386a9b11e3f1c21bf54 (patch) | |
tree | a27ce88390580bc6a5a81c4fe9c1835035a931eb /generic/tclUtil.c | |
parent | f517800ef8d7c3af46ccb2773a711e38792e3d67 (diff) | |
download | tcl-9ed1dc8ae2008e5197622386a9b11e3f1c21bf54.zip tcl-9ed1dc8ae2008e5197622386a9b11e3f1c21bf54.tar.gz tcl-9ed1dc8ae2008e5197622386a9b11e3f1c21bf54.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/tclUtil.c')
-rw-r--r-- | generic/tclUtil.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/generic/tclUtil.c b/generic/tclUtil.c index d12ebe8..ca5ba0e 100644 --- a/generic/tclUtil.c +++ b/generic/tclUtil.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUtil.c,v 1.36.2.7 2006/09/30 19:20:12 msofer Exp $ + * RCS: @(#) $Id: tclUtil.c,v 1.36.2.8 2007/05/10 18:23:58 dgp Exp $ */ #include "tclInt.h" @@ -1970,7 +1970,7 @@ TclPrecTraceProc(clientData, interp, name1, name2, flags) */ if (flags & TCL_TRACE_UNSETS) { - if ((flags & TCL_TRACE_DESTROYED) && !(flags & TCL_INTERP_DESTROYED)) { + if ((flags & TCL_TRACE_DESTROYED) && !Tcl_InterpDeleted(interp)) { Tcl_TraceVar2(interp, name1, name2, TCL_GLOBAL_ONLY|TCL_TRACE_READS|TCL_TRACE_WRITES |TCL_TRACE_UNSETS, TclPrecTraceProc, clientData); |