Attachment "singleWord.patch3" to
ticket [458361ffff]
added by
msofer
2001-09-12 02:38:40.
Index: generic/tclBasic.c
===================================================================
RCS file: /cvsroot/tcl/tcl/generic/tclBasic.c,v
retrieving revision 1.35
diff -u -r1.35 tclBasic.c
--- generic/tclBasic.c 2001/09/01 00:51:31 1.35
+++ generic/tclBasic.c 2001/09/11 19:36:58
@@ -2797,10 +2797,23 @@
p = Tcl_GetStringFromObj(objPtr, &numSrcBytes);
result = Tcl_EvalEx(interp, p, numSrcBytes, flags);
}
- Tcl_DecrRefCount(objPtr);
- return result;
+ goto fastExit;
}
+ /*
+ * Hack to avoid repeated recompilation of single-word scripts
+ * [Bug 458361]
+ */
+
+ if (objPtr->typePtr == &tclCmdNameType) {
+ Tcl_Obj *objvPtr = objPtr;
+ result = Tcl_EvalObjv(interp, 1, &objvPtr, flags);
+ if (result != TCL_ERROR) {
+ goto fastExit;
+ }
+ }
+
+
/*
* Prevent the object from being deleted as a side effect of evaling it.
*/
@@ -3005,9 +3018,11 @@
iPtr->flags &= ~ERR_ALREADY_LOGGED;
done:
- TclDecrRefCount(objPtr);
iPtr->varFramePtr = savedVarFramePtr;
iPtr->numLevels--;
+
+ fastExit:
+ TclDecrRefCount(objPtr);
return result;
}