Tcl Source Code

Artifact [85a710b8ca]
Login

Artifact 85a710b8ca99c2a8a27d77c9e4811f26aa09d3e3:

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;
 }