summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--generic/tclBasic.c3
2 files changed, 11 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index cb9f5c3..23b91b7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2011-03-27 Miguel Sofer <msofer@users.sf.net>
+
+ * generic/tclBasic.c (TclNREvalObjEx): fix performance issue,
+ notably apparent in tclbench's "LIST lset foreach". Many thanks to
+ twylite for patiently researching the issue and explaining it to
+ me: a missing Tcl_ResetObjResult that causes unwanted sharing of
+ the current result Tcl_Obj.
+
2011-03-26 Donal K. Fellows <dkf@users.sf.net>
* generic/tclNamesp.c (Tcl_Export, Tcl_Import, DoImport): More
diff --git a/generic/tclBasic.c b/generic/tclBasic.c
index 5f2b301..b34209b 100644
--- a/generic/tclBasic.c
+++ b/generic/tclBasic.c
@@ -6018,6 +6018,9 @@ TclNREvalObjEx(
* iPtr->varFramePtr in case
* TCL_EVAL_GLOBAL was set. */
+ if (TclInterpReady(interp) != TCL_OK) {
+ return TCL_ERROR;
+ }
if (flags & TCL_EVAL_GLOBAL) {
savedVarFramePtr = iPtr->varFramePtr;
iPtr->varFramePtr = iPtr->rootFramePtr;