summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--generic/tclBasic.c11
2 files changed, 15 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 176e594..be20b96 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2011-03-01 Miguel Sofer <msofer@users.sf.net>
+
+ * generic/tclBasic.c (TclNRRunCallbacks): don't do the trampoline
+ dance for commands that do not have an nreProc, [Patch 3168229]
+
2011-03-01 Donal K. Fellows <dkf@users.sf.net>
* generic/tclOO.c (Tcl_NewObjectInstance, TclNRNewObjectInstance)
diff --git a/generic/tclBasic.c b/generic/tclBasic.c
index 0238d8f..21a1560 100644
--- a/generic/tclBasic.c
+++ b/generic/tclBasic.c
@@ -4280,6 +4280,7 @@ TclNREvalObjv(
* a callback to do the actual running.
*/
+#if 0
objProc = cmdPtr->nreProc;
if (!objProc) {
objProc = cmdPtr->objProc;
@@ -4288,7 +4289,15 @@ TclNREvalObjv(
TclNRAddCallback(interp, NRRunObjProc, objProc, objClientData,
INT2PTR(objc), (ClientData) objv);
- return TCL_OK;
+#else
+ if (cmdPtr->nreProc) {
+ TclNRAddCallback(interp, NRRunObjProc, cmdPtr->nreProc,
+ cmdPtr->objClientData, INT2PTR(objc), (ClientData) objv);
+ return TCL_OK;
+ } else {
+ return cmdPtr->objProc(cmdPtr->objClientData, interp, objc, objv);
+ }
+#endif
}
void