*** /usr/tmp/TclTk/itcl3.0.1/itcl/generic/itcl_ensemble.c.orig Sun Jun 6 17:09:21 1999 --- /usr/tmp/TclTk/itcl3.0.1/itcl/generic/itcl_ensemble.c Mon Oct 25 22:01:41 1999 *************** *** 1626,1632 **** * another "ensemble" command. Use the current ensemble as * the parent, and find or create an ensemble part within it. */ ! ensName = TclGetStringFromObj(objv[1], (int*)NULL); if (ensData) { if (FindEnsemblePart(interp, ensData, ensName, &ensPart) != TCL_OK) { --- 1626,1632 ---- * another "ensemble" command. Use the current ensemble as * the parent, and find or create an ensemble part within it. */ ! ensName = Tcl_GetStringFromObj(objv[1], (int*)NULL); if (ensData) { if (FindEnsemblePart(interp, ensData, ensName, &ensPart) != TCL_OK) { *************** *** 1693,1698 **** --- 1693,1699 ---- } else if (objc > 3) { objPtr = Tcl_NewListObj(objc-2, objv+2); + Tcl_IncrRefCount(objPtr); /* stop Eval trashing it */ status = Tcl_EvalObj(ensInfo->parser, objPtr); Tcl_DecrRefCount(objPtr); /* we're done with the object */ } *************** *** 2103,2108 **** --- 2104,2110 ---- if (prevArgObj) { objPtr = Tcl_DuplicateObj(prevArgObj); + Tcl_IncrRefCount(objPtr); copyPtr->internalRep.twoPtrValue.ptr2 = (VOID *) objPtr; } } *************** *** 2154,2160 **** * keep the string around as if it were the command line * invocation. */ ! argObj = Tcl_NewStringObj(name, -1); /* * Free the old representation and install a new one. --- 2156,2162 ---- * keep the string around as if it were the command line * invocation. */ ! argObj = Tcl_NewStringObj(name, length); /* * Free the old representation and install a new one.