Attachment "1119369" to
ticket [1119369fff]
added by
msofer
2005-02-10 04:44:47.
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);