Index: generic/tclBasic.c
===================================================================
RCS file: /cvsroot/tcl/tcl/generic/tclBasic.c,v
retrieving revision 1.140
diff -u -r1.140 tclBasic.c
--- generic/tclBasic.c	28 Jan 2005 01:49:50 -0000	1.140
+++ generic/tclBasic.c	9 Feb 2005 21:41:58 -0000
@@ -3754,11 +3754,22 @@
 	 * everything into a string and back out again.
 	 */
 	if ((objPtr->typePtr == &tclListType) && /* is a list... */
-		(objPtr->bytes == NULL) /* ...without a string rep */) {
-	    register List *listRepPtr =
+		(objPtr->bytes == NULL) /* ...without a string rep */) {	    
+	    List *listRepPtr =
 		(List *) objPtr->internalRep.twoPtrValue.ptr1;
-	    result = Tcl_EvalObjv(interp, listRepPtr->elemCount,
-		    listRepPtr->elements, flags);
+	    int i, objc = listRepPtr->elemCount;
+	    Tcl_Obj **objv;
+
+	    objv = (Tcl_Obj **) TclStackAlloc(interp, objc*sizeof(Tcl_Obj *));
+	    for (i=0; i < objc; i++) {
+		objv[i] = listRepPtr->elements[i];
+		Tcl_IncrRefCount(objv[i]);
+	    }
+	    result = Tcl_EvalObjv(interp, objc, objv, flags);
+	    for (i=0; i < objc; i++) {
+		TclDecrRefCount(objv[i]);
+	    }
+	    TclStackFree(interp);
 	} else {
 	    script = Tcl_GetStringFromObj(objPtr, &numSrcBytes);
 	    result = Tcl_EvalEx(interp, script, numSrcBytes, flags);
