summaryrefslogtreecommitdiffstats
path: root/generic/tclVar.c
diff options
context:
space:
mode:
Diffstat (limited to 'generic/tclVar.c')
-rw-r--r--generic/tclVar.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/generic/tclVar.c b/generic/tclVar.c
index 810b7d6..87398fc 100644
--- a/generic/tclVar.c
+++ b/generic/tclVar.c
@@ -3099,7 +3099,7 @@ ArrayForNRCmd(
* loop) don't vanish.
*/
- varListObj = TclListObjCopy(NULL, objv[1]);
+ varListObj = TclDuplicatePureObj(objv[1]);
scriptObj = objv[3];
Tcl_IncrRefCount(scriptObj);
@@ -3178,7 +3178,10 @@ ArrayForLoopCallback(
goto arrayfordone;
}
- TclListObjGetElementsM(NULL, varListObj, &varc, &varv);
+ result = TclListObjGetElementsM(NULL, varListObj, &varc, &varv);
+ if (result != TCL_OK) {
+ goto arrayfordone;
+ }
if (Tcl_ObjSetVar2(interp, varv[0], NULL, keyObj,
TCL_LEAVE_ERR_MSG) == NULL) {
result = TCL_ERROR;
@@ -4069,7 +4072,7 @@ ArraySetCmd(
* the loop and return an error.
*/
- copyListObj = TclListObjCopy(NULL, arrayElemObj);
+ copyListObj = TclDuplicatePureObj(arrayElemObj);
for (i=0 ; i<elemLen ; i+=2) {
Var *elemVarPtr = TclLookupArrayElement(interp, arrayNameObj,
elemPtrs[i], TCL_LEAVE_ERR_MSG, "set", 1, 1, varPtr, -1);