diff options
author | dgp <dgp@users.sourceforge.net> | 2011-06-20 20:16:37 (GMT) |
---|---|---|
committer | dgp <dgp@users.sourceforge.net> | 2011-06-20 20:16:37 (GMT) |
commit | 22ca5ec523a49ed377e9b660296b6fada9584cec (patch) | |
tree | ae038c3e68f533819e22af5b845f28d0bba342cb /generic | |
parent | 5e85514e64b3aea53ecc540e66af5be03a3a8a9b (diff) | |
parent | 5bc58dfd6d5f986104e6427cd158cacfbfcd6a70 (diff) | |
download | tcl-22ca5ec523a49ed377e9b660296b6fada9584cec.zip tcl-22ca5ec523a49ed377e9b660296b6fada9584cec.tar.gz tcl-22ca5ec523a49ed377e9b660296b6fada9584cec.tar.bz2 |
merge to RC
Diffstat (limited to 'generic')
-rw-r--r-- | generic/tclIOCmd.c | 2 | ||||
-rwxr-xr-x | generic/tclStrToD.c | 2 | ||||
-rw-r--r-- | generic/tclTrace.c | 10 |
3 files changed, 12 insertions, 2 deletions
diff --git a/generic/tclIOCmd.c b/generic/tclIOCmd.c index e166e94..0c05cbf 100644 --- a/generic/tclIOCmd.c +++ b/generic/tclIOCmd.c @@ -138,7 +138,7 @@ Tcl_PutsObjCmd( chanObjPtr = objv[2]; string = objv[3]; break; - } else if (strcmp(TclGetString(objv[2]), "nonewline") == 0) { + } else if (strcmp(TclGetString(objv[3]), "nonewline") == 0) { /* * The code below provides backwards compatibility with an old * form of the command that is no longer recommended or diff --git a/generic/tclStrToD.c b/generic/tclStrToD.c index e8b7538..421657c 100755 --- a/generic/tclStrToD.c +++ b/generic/tclStrToD.c @@ -3790,7 +3790,7 @@ ShorteningBignumConversion(Double* dPtr, if (m2plus > m2minus) { mp_clear(&mplus); } - mp_clear_multi(&b, &mminus, &temp, NULL); + mp_clear_multi(&b, &mminus, &temp, &dig, &S, NULL); *s = '\0'; *decpt = k; if (endPtr) { 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; |