diff options
author | andreas_kupries <akupries@shaw.ca> | 2010-09-01 19:42:27 (GMT) |
---|---|---|
committer | andreas_kupries <akupries@shaw.ca> | 2010-09-01 19:42:27 (GMT) |
commit | 23a452f662f5b300b9b4f0975389f6b60c1581ad (patch) | |
tree | 30e30115955a0d384b8b161ea77c76fc062247ee /generic | |
parent | 897b68117843dfc4d00d96c98a793b3093b3ba0a (diff) | |
download | tcl-23a452f662f5b300b9b4f0975389f6b60c1581ad.zip tcl-23a452f662f5b300b9b4f0975389f6b60c1581ad.tar.gz tcl-23a452f662f5b300b9b4f0975389f6b60c1581ad.tar.bz2 |
* generic/tclExecute.c: [Bug 3057639]. Applied patch by Jeff to
* generic/tclVar.c: make the behaviour of lappend in bytecompiled
* tests/append.test: mode consistent with direct-eval and 'append'
* tests/appendComp.test: generally. Added tests (append*-9.*)
showing the difference.
Diffstat (limited to 'generic')
-rw-r--r-- | generic/tclExecute.c | 14 | ||||
-rw-r--r-- | generic/tclVar.c | 8 |
2 files changed, 12 insertions, 10 deletions
diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 41ea4f9..4f9ee5f 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.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: tclExecute.c,v 1.369.2.14 2010/07/02 20:58:07 dkf Exp $ + * RCS: @(#) $Id: tclExecute.c,v 1.369.2.15 2010/09/01 19:42:39 andreas_kupries Exp $ */ #include "tclInt.h" @@ -2885,14 +2885,14 @@ TclExecuteByteCode( valuePtr = OBJ_AT_TOS; /* value to append */ part2Ptr = NULL; storeFlags = (TCL_LEAVE_ERR_MSG | TCL_APPEND_VALUE - | TCL_LIST_ELEMENT | TCL_TRACE_READS); + | TCL_LIST_ELEMENT); goto doStoreStk; case INST_LAPPEND_ARRAY_STK: valuePtr = OBJ_AT_TOS; /* value to append */ part2Ptr = OBJ_UNDER_TOS; storeFlags = (TCL_LEAVE_ERR_MSG | TCL_APPEND_VALUE - | TCL_LIST_ELEMENT | TCL_TRACE_READS); + | TCL_LIST_ELEMENT); goto doStoreStk; case INST_APPEND_STK: @@ -2947,14 +2947,14 @@ TclExecuteByteCode( opnd = TclGetUInt4AtPtr(pc+1); pcAdjustment = 5; storeFlags = (TCL_LEAVE_ERR_MSG | TCL_APPEND_VALUE - | TCL_LIST_ELEMENT | TCL_TRACE_READS); + | TCL_LIST_ELEMENT); goto doStoreArray; case INST_LAPPEND_ARRAY1: opnd = TclGetUInt1AtPtr(pc+1); pcAdjustment = 2; storeFlags = (TCL_LEAVE_ERR_MSG | TCL_APPEND_VALUE - | TCL_LIST_ELEMENT | TCL_TRACE_READS); + | TCL_LIST_ELEMENT); goto doStoreArray; case INST_APPEND_ARRAY4: @@ -2996,14 +2996,14 @@ TclExecuteByteCode( opnd = TclGetUInt4AtPtr(pc+1); pcAdjustment = 5; storeFlags = (TCL_LEAVE_ERR_MSG | TCL_APPEND_VALUE - | TCL_LIST_ELEMENT | TCL_TRACE_READS); + | TCL_LIST_ELEMENT); goto doStoreScalar; case INST_LAPPEND_SCALAR1: opnd = TclGetUInt1AtPtr(pc+1); pcAdjustment = 2; storeFlags = (TCL_LEAVE_ERR_MSG | TCL_APPEND_VALUE - | TCL_LIST_ELEMENT | TCL_TRACE_READS); + | TCL_LIST_ELEMENT); goto doStoreScalar; case INST_APPEND_SCALAR4: diff --git a/generic/tclVar.c b/generic/tclVar.c index c23681f..edce98d 100644 --- a/generic/tclVar.c +++ b/generic/tclVar.c @@ -16,7 +16,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclVar.c,v 1.160.2.10 2010/07/31 18:10:11 msofer Exp $ + * RCS: @(#) $Id: tclVar.c,v 1.160.2.11 2010/09/01 19:42:40 andreas_kupries Exp $ */ #include "tclInt.h" @@ -1815,8 +1815,10 @@ TclPtrSetVar( /* * Invoke any read traces that have been set for the variable if it is - * requested; this is only done in the core by the INST_LAPPEND_* - * instructions. + * requested. This was done for INST_LAPPEND_* but that was inconsistent + * with the non-bc instruction, and would cause failures trying to + * lappend to any non-existing ::env var, which is inconsistent with + * documented behavior. [Bug #3057639] */ if ((flags & TCL_TRACE_READS) && ((varPtr->flags & VAR_TRACED_READ) |