aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2011-03-24 02:50:03 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2011-03-24 02:50:03 +0100
commit68d5cb5dacbc80347119ac9cff365e5f04105ef1 (patch)
tree0131cb18f76a4e366a17de7c34882f07c5550557
parent20704f066250744c0c2b84920c27d0fd0aa9e935 (diff)
downloadbusybox-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.c4
-rw-r--r--shell/hush_test/hush-misc/return1.right1
-rwxr-xr-xshell/hush_test/hush-misc/return1.tests4
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 @@
1echo "true && return; echo Should not be printed" >return_sourced
2. ./return_sourced
3rm return_sourced
4echo Ok:$?