From 68d5cb5dacbc80347119ac9cff365e5f04105ef1 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Thu, 24 Mar 2011 02:50:03 +0100 Subject: hush: fix a case where return in sourced file has no effect Signed-off-by: Denys Vlasenko --- shell/hush.c | 4 ++++ shell/hush_test/hush-misc/return1.right | 1 + shell/hush_test/hush-misc/return1.tests | 4 ++++ 3 files changed, 9 insertions(+) create mode 100644 shell/hush_test/hush-misc/return1.right create mode 100755 shell/hush_test/hush-misc/return1.tests (limited to 'shell') 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:$? -- cgit v1.2.3