summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko2018-07-28 12:42:08 +0200
committerDenys Vlasenko2018-07-28 12:42:08 +0200
commita5db1d7354977fe295882ff557e8f5fb23741b13 (patch)
treefab0fd9d857d1e9de4ed030c03e194e18312f28f
parenta8e7441176ec945a1bfb117a1067ac3a6680a19c (diff)
downloadbusybox-a5db1d7354977fe295882ff557e8f5fb23741b13.zip
busybox-a5db1d7354977fe295882ff557e8f5fb23741b13.tar.gz
hush: fix another case where empty "for" wasn't setting exitcode to 0
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--shell/ash_test/ash-misc/empty_for1.right1
-rwxr-xr-xshell/ash_test/ash-misc/empty_for1.tests5
-rw-r--r--shell/hush.c2
-rw-r--r--shell/hush_test/hush-misc/empty_for1.right1
-rwxr-xr-xshell/hush_test/hush-misc/empty_for1.tests5
5 files changed, 13 insertions, 1 deletions
diff --git a/shell/ash_test/ash-misc/empty_for1.right b/shell/ash_test/ash-misc/empty_for1.right
new file mode 100644
index 0000000..46ffcec
--- /dev/null
+++ b/shell/ash_test/ash-misc/empty_for1.right
@@ -0,0 +1 @@
+Zero:0
diff --git a/shell/ash_test/ash-misc/empty_for1.tests b/shell/ash_test/ash-misc/empty_for1.tests
new file mode 100755
index 0000000..5a2554d
--- /dev/null
+++ b/shell/ash_test/ash-misc/empty_for1.tests
@@ -0,0 +1,5 @@
+false
+for v; do
+ exit 2
+done
+echo Zero:$?
diff --git a/shell/hush.c b/shell/hush.c
index 14681aa..d17f7f2 100644
--- a/shell/hush.c
+++ b/shell/hush.c
@@ -9391,11 +9391,11 @@ static int run_list(struct pipe *pi)
}; /* argv list with one element: "$@" */
char **vals;
+ G.last_exitcode = rcode = EXIT_SUCCESS;
vals = (char**)encoded_dollar_at_argv;
if (pi->next->res_word == RES_IN) {
/* if no variable values after "in" we skip "for" */
if (!pi->next->cmds[0].argv) {
- G.last_exitcode = rcode = EXIT_SUCCESS;
debug_printf_exec(": null FOR: exitcode EXIT_SUCCESS\n");
break;
}
diff --git a/shell/hush_test/hush-misc/empty_for1.right b/shell/hush_test/hush-misc/empty_for1.right
new file mode 100644
index 0000000..46ffcec
--- /dev/null
+++ b/shell/hush_test/hush-misc/empty_for1.right
@@ -0,0 +1 @@
+Zero:0
diff --git a/shell/hush_test/hush-misc/empty_for1.tests b/shell/hush_test/hush-misc/empty_for1.tests
new file mode 100755
index 0000000..5a2554d
--- /dev/null
+++ b/shell/hush_test/hush-misc/empty_for1.tests
@@ -0,0 +1,5 @@
+false
+for v; do
+ exit 2
+done
+echo Zero:$?