Index: generic/tclExecute.c
===================================================================
RCS file: /cvsroot/tcl/tcl/generic/tclExecute.c,v
retrieving revision 1.259
diff -u -r1.259 tclExecute.c
--- generic/tclExecute.c	20 Feb 2007 23:24:03 -0000	1.259
+++ generic/tclExecute.c	28 Feb 2007 18:04:45 -0000
@@ -5305,8 +5305,8 @@
 		numVars = varListPtr->numVars;
 
 		listVarPtr = &(compiledLocals[listTmpIndex]);
-		listPtr = listVarPtr->value.objPtr;
-		Tcl_ListObjGetElements(interp, listPtr, &listLen, &elements);
+		listPtr = TclListObjCopy(NULL, listVarPtr->value.objPtr);
+		Tcl_ListObjGetElements(NULL, listPtr, &listLen, &elements);
 
 		valIndex = (iterNum * numVars);
 		for (j = 0;  j < numVars;  j++) {
@@ -5343,11 +5343,13 @@
 			    TRACE_WITH_OBJ(("%u => ERROR init. index temp %d: ",
 				    opnd, varIndex), Tcl_GetObjResult(interp));
 			    result = TCL_ERROR;
+			    Tcl_DecrRefCount(listPtr);
 			    goto checkForCatch;
 			}
 		    }
 		    valIndex++;
 		}
+		Tcl_DecrRefCount(listPtr);
 		listTmpIndex++;
 	    }
 	}
