diff options
Diffstat (limited to 'generic/tclVar.c')
| -rw-r--r-- | generic/tclVar.c | 9 |
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); |
