summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordgp <dgp@users.sourceforge.net>2017-12-19 20:48:52 (GMT)
committerdgp <dgp@users.sourceforge.net>2017-12-19 20:48:52 (GMT)
commite10cd2e0a52b97a25e6e05658f8f96b2f53bf45c (patch)
tree81f4d66eb1ad0fcfc2a52f87317119dbcf03fb38
parent0fb81cb5dd85b298db7f4efe9c3dbdca910cf1d5 (diff)
downloadtcl-e10cd2e0a52b97a25e6e05658f8f96b2f53bf45c.zip
tcl-e10cd2e0a52b97a25e6e05658f8f96b2f53bf45c.tar.gz
tcl-e10cd2e0a52b97a25e6e05658f8f96b2f53bf45c.tar.bz2
[586e71dce4] Exeception handling at level #0 by EvalObjv
-rw-r--r--generic/tclBasic.c2
-rw-r--r--tests/basic.test10
2 files changed, 11 insertions, 1 deletions
diff --git a/generic/tclBasic.c b/generic/tclBasic.c
index 79de61e..ddc828a 100644
--- a/generic/tclBasic.c
+++ b/generic/tclBasic.c
@@ -4561,7 +4561,7 @@ TEOV_Exception(
if (result == TCL_RETURN) {
result = TclUpdateReturnInfo(iPtr);
}
- if ((result != TCL_ERROR) && !allowExceptions) {
+ if ((result != TCL_OK) && (result != TCL_ERROR) && !allowExceptions) {
ProcessUnexpectedResult(interp, result);
result = TCL_ERROR;
}
diff --git a/tests/basic.test b/tests/basic.test
index 7ff0669..865814a 100644
--- a/tests/basic.test
+++ b/tests/basic.test
@@ -984,6 +984,16 @@ test basic-49.2 {Tcl_EvalEx: verify TCL_EVAL_GLOBAL operation} testevalex {
set ::context
} {global}
+test basic-50.1 {[586e71dce4] EvalObjv level #0 exception handling} -setup {
+ interp create slave
+ interp alias {} foo slave return
+} -body {
+ list [catch foo m] $m
+} -cleanup {
+ unset -nocomplain m
+ interp delete slave
+} -result {0 {}}
+
# Clean up after expand tests
unset noComp l1 l2 constraints
rename l3 {}