diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2011-03-24 02:50:03 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2011-03-24 02:50:03 +0100 |
commit | 68d5cb5dacbc80347119ac9cff365e5f04105ef1 (patch) | |
tree | 0131cb18f76a4e366a17de7c34882f07c5550557 | |
parent | 20704f066250744c0c2b84920c27d0fd0aa9e935 (diff) | |
download | busybox-w32-68d5cb5dacbc80347119ac9cff365e5f04105ef1.tar.gz busybox-w32-68d5cb5dacbc80347119ac9cff365e5f04105ef1.tar.bz2 busybox-w32-68d5cb5dacbc80347119ac9cff365e5f04105ef1.zip |
hush: fix a case where return in sourced file has no effect
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-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) | |||
5554 | debug_printf_exec("parse_and_run_stream: run_and_free_list\n"); | 5554 | debug_printf_exec("parse_and_run_stream: run_and_free_list\n"); |
5555 | run_and_free_list(pipe_list); | 5555 | run_and_free_list(pipe_list); |
5556 | empty = 0; | 5556 | empty = 0; |
5557 | #if ENABLE_HUSH_FUNCTIONS | ||
5558 | if (G.flag_return_in_progress == 1) | ||
5559 | break; | ||
5560 | #endif | ||
5557 | } | 5561 | } |
5558 | } | 5562 | } |
5559 | 5563 | ||
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 @@ | |||
1 | echo "true && return; echo Should not be printed" >return_sourced | ||
2 | . ./return_sourced | ||
3 | rm return_sourced | ||
4 | echo Ok:$? | ||