From 1f0f424fe611611251694502655b9330fc6c9e7d Mon Sep 17 00:00:00 2001 From: Steve Bennett Date: Fri, 13 Dec 2019 11:22:26 +1000 Subject: [PATCH] return: fix -level 0 -code xxx Should return the given return code, not JIM_RETURN (2) Reported-by: dbohdan Signed-off-by: Steve Bennett --- jim.c | 2 +- tests/return.test | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/jim.c b/jim.c index 9ddf4e5..8bb5a20 100644 --- a/jim.c +++ b/jim.c @@ -12981,7 +12981,7 @@ static int Jim_ReturnCoreCommand(Jim_Interp *interp, int argc, Jim_Obj *const *a if (i == argc - 1) { Jim_SetResult(interp, argv[i]); } - return JIM_RETURN; + return level == 0 ? returnCode : JIM_RETURN; } /* [tailcall] */ diff --git a/tests/return.test b/tests/return.test index 94e38a3..9ef6d79 100644 --- a/tests/return.test +++ b/tests/return.test @@ -1,5 +1,7 @@ source [file dirname [info script]]/testing.tcl +set testpath [file dirname [info script]] + # return -code test return-1.1 {return -code} { @@ -8,11 +10,11 @@ test return-1.1 {return -code} { } {2 result} test return-1.2 {source file with break} { - list [catch {source break.tcl} msg] $msg + list [catch {source $testpath/break.tcl} msg] $msg } {3 {}} test return-1.3 {source file with break} { - list [catch {source return-break.tcl} msg] $msg + list [catch {source $testpath/return-break.tcl} msg] $msg } {3 result} proc a {level code msg} { @@ -47,4 +49,9 @@ test return-2.6 {return -level 2} { list [catch {b 2 20 text} msg] $msg } {20 text} +test return-2.7 {return -level 0 -code break} { + list [catch {return -level 0 -code break text} msg] $msg +} {3 text} + + testreport -- 2.11.4.GIT