? darius
Index: generic/tclBasic.c
===================================================================
RCS file: /cvsroot/tcl/tcl/generic/tclBasic.c,v
retrieving revision 1.377
diff -u -b -u -r1.377 tclBasic.c
--- generic/tclBasic.c	12 Dec 2008 16:18:09 -0000	1.377
+++ generic/tclBasic.c	17 Dec 2008 16:47:48 -0000
@@ -4042,8 +4042,6 @@
     Interp *iPtr = (Interp *) interp;
     int result;
     Namespace *lookupNsPtr = iPtr->lookupNsPtr;
-    Tcl_ObjCmdProc *objProc;
-    ClientData objClientData;
     Command **cmdPtrPtr;
 
     iPtr->lookupNsPtr = NULL;
@@ -4172,19 +4170,8 @@
     *cmdPtrPtr = cmdPtr;
     cmdPtr->refCount++;
 
-    /*
-     * Find the objProc to call: nreProc if available, objProc otherwise. Push
-     * a callback to do the actual running.
-     */
-
-    objProc = cmdPtr->nreProc;
-    if (!objProc) {
-	objProc = cmdPtr->objProc;
-    }
-    objClientData = cmdPtr->objClientData;
-
-    TclNRAddCallback(interp, NRRunObjProc, objProc, objClientData,
-	    INT2PTR(objc), (ClientData) objv);
+    TclNRAddCallback(interp, NRRunObjProc, cmdPtr,
+	    INT2PTR(objc), (ClientData) objv, NULL);
     return TCL_OK;
 }
 
@@ -4294,14 +4281,28 @@
 {
     /* OPT: do not call? */
 
-    Tcl_ObjCmdProc *objProc = data[0];
-    ClientData objClientData = data[1];
-    int objc = PTR2INT(data[2]);
-    Tcl_Obj **objv = data[3];
+    Command* cmdPtr = data[0];
+    Tcl_ObjCmdProc *objProc;
+    ClientData objClientData;
+    int objc = PTR2INT(data[1]);
+    Tcl_Obj **objv = data[2];
+
+
+    /*
+     * Find the objProc to call: nreProc if available, objProc otherwise. Push
+     * a callback to do the actual running.
+     */
+
+    objProc = cmdPtr->nreProc;
+    if (!objProc) {
+	objProc = cmdPtr->objProc;
+    }
+    objClientData = cmdPtr->objClientData;
 
     if (result == TCL_OK) {
 	return objProc(objClientData, interp, objc, objv);
     }
+
     return result;
 }
 
