diff options
author | dgp <dgp@users.sourceforge.net> | 2011-06-17 20:03:24 (GMT) |
---|---|---|
committer | dgp <dgp@users.sourceforge.net> | 2011-06-17 20:03:24 (GMT) |
commit | 1abf9a46d01a0eb473a42503dce30c45fca080b6 (patch) | |
tree | 54e16c2a06dee07b42bb129bdf9ccc51317ac76d /generic/tclTrace.c | |
parent | b38805471a51d410da8f770ebf78ef0776f4b04f (diff) | |
download | tcl-1abf9a46d01a0eb473a42503dce30c45fca080b6.zip tcl-1abf9a46d01a0eb473a42503dce30c45fca080b6.tar.gz tcl-1abf9a46d01a0eb473a42503dce30c45fca080b6.tar.bz2 |
3062331 Caveat added to comments.
Diffstat (limited to 'generic/tclTrace.c')
-rw-r--r-- | generic/tclTrace.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/generic/tclTrace.c b/generic/tclTrace.c index 49c57bc..28e6934 100644 --- a/generic/tclTrace.c +++ b/generic/tclTrace.c @@ -2874,6 +2874,16 @@ Tcl_UntraceVar2( * The code below makes it possible to delete traces while traces are * active: it makes sure that the deleted trace won't be processed by * TclCallVarTraces. + * + * Caveat (Bug 3062331): When an unset trace handler on a variable + * tries to delete a different unset trace handler on the same variable, + * the results may be surprising. When variable unset traces fire, the + * traced variable is already gone. So the TclLookupVar() call above + * will not find that variable, and not finding it will never reach here + * to perform the deletion. This means callers of Tcl_UntraceVar*() + * attempting to delete unset traces from within the handler of another + * unset trace have to account for the possibility that their call to + * Tcl_UntraceVar*() is a no-op. */ for (activePtr = iPtr->activeVarTracePtr; activePtr != NULL; |