summaryrefslogtreecommitdiffstats
path: root/generic/tclBasic.c
diff options
context:
space:
mode:
authordgp <dgp@users.sourceforge.net>2013-04-08 18:11:33 (GMT)
committerdgp <dgp@users.sourceforge.net>2013-04-08 18:11:33 (GMT)
commit2bcd186571b8f37c820add859b48f7046260d261 (patch)
tree6dbd95c782b9c5f5d998bac40cd3c6aced5ca61f /generic/tclBasic.c
parente51453c41298f99bcf7ea71f57c69463d5b904a9 (diff)
downloadtcl-2bcd186571b8f37c820add859b48f7046260d261.zip
tcl-2bcd186571b8f37c820add859b48f7046260d261.tar.gz
tcl-2bcd186571b8f37c820add859b48f7046260d261.tar.bz2
Revise TclNREvalObjv so that pre-resolution of the Command by a caller
does not force suppression of exception handling. Let those be separable demands. Aim is to bring TclObjInvoke*() into the fold.
Diffstat (limited to 'generic/tclBasic.c')
-rw-r--r--generic/tclBasic.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/generic/tclBasic.c b/generic/tclBasic.c
index cde1cb9..22ec6b0 100644
--- a/generic/tclBasic.c
+++ b/generic/tclBasic.c
@@ -4188,10 +4188,6 @@ TclNREvalObjv(
return result;
}
- if (cmdPtr) {
- goto commandFound;
- }
-
/*
* Push records for task to be done on return, in INVERSE order. First, if
* needed, the exception handlers (as they should happen last).
@@ -4201,6 +4197,10 @@ TclNREvalObjv(
TEOV_PushExceptionHandlers(interp, objc, objv, flags);
}
+ if (cmdPtr) {
+ goto commandFound;
+ }
+
/*
* Configure evaluation context to match the requested flags.
*/
@@ -6620,9 +6620,11 @@ TclObjInvoke(
Tcl_Panic("TclObjInvoke: called without TCL_INVOKE_HIDDEN");
}
+#if 1
if (TclInterpReady(interp) == TCL_ERROR) {
return TCL_ERROR;
}
+#endif
cmdName = TclGetString(objv[0]);
hTblPtr = iPtr->hiddenCmdTablePtr;
@@ -6638,6 +6640,7 @@ TclObjInvoke(
}
cmdPtr = Tcl_GetHashValue(hPtr);
+#if 1
/*
* Invoke the command function.
*/
@@ -6669,6 +6672,9 @@ TclObjInvoke(
iPtr->flags &= ~ERR_ALREADY_LOGGED;
}
return result;
+#else
+
+#endif
}
/*
@@ -8243,7 +8249,8 @@ Tcl_NRCmdSwap(
Tcl_Obj *const objv[],
int flags)
{
- return TclNREvalObjv(interp, objc, objv, flags, (Command *) cmd);
+ return TclNREvalObjv(interp, objc, objv, flags|TCL_EVAL_NOERR,
+ (Command *) cmd);
}
/*****************************************************************************