diff options
-rw-r--r-- | shell/hush.c | 4 | ||||
-rw-r--r-- | shell/hush_test/hush-misc/return1.right | 1 | ||||
-rwxr-xr-x | shell/hush_test/hush-misc/return1.tests | 4 |
3 files changed, 9 insertions, 0 deletions
diff --git a/shell/hush.c b/shell/hush.c index 339f3349a..8154ac47b 100644 --- a/shell/hush.c +++ b/shell/hush.c @@ -5554,6 +5554,10 @@ static void parse_and_run_stream(struct in_str *inp, int end_trigger) debug_printf_exec("parse_and_run_stream: run_and_free_list\n"); run_and_free_list(pipe_list); empty = 0; +#if ENABLE_HUSH_FUNCTIONS + if (G.flag_return_in_progress == 1) + break; +#endif } } diff --git a/shell/hush_test/hush-misc/return1.right b/shell/hush_test/hush-misc/return1.right new file mode 100644 index 000000000..7b24a35ff --- /dev/null +++ b/shell/hush_test/hush-misc/return1.right @@ -0,0 +1 @@ +Ok:0 diff --git a/shell/hush_test/hush-misc/return1.tests b/shell/hush_test/hush-misc/return1.tests new file mode 100755 index 000000000..eeb92ef3f --- /dev/null +++ b/shell/hush_test/hush-misc/return1.tests @@ -0,0 +1,4 @@ +echo "true && return; echo Should not be printed" >return_sourced +. ./return_sourced +rm return_sourced +echo Ok:$? |