From a5db1d7354977fe295882ff557e8f5fb23741b13 Mon Sep 17 00:00:00 2001
From: Denys Vlasenko <vda.linux@googlemail.com>
Date: Sat, 28 Jul 2018 12:42:08 +0200
Subject: hush: fix another case where empty "for" wasn't setting exitcode to 0

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
---
 shell/ash_test/ash-misc/empty_for1.right   | 1 +
 shell/ash_test/ash-misc/empty_for1.tests   | 5 +++++
 shell/hush.c                               | 2 +-
 shell/hush_test/hush-misc/empty_for1.right | 1 +
 shell/hush_test/hush-misc/empty_for1.tests | 5 +++++
 5 files changed, 13 insertions(+), 1 deletion(-)
 create mode 100644 shell/ash_test/ash-misc/empty_for1.right
 create mode 100755 shell/ash_test/ash-misc/empty_for1.tests
 create mode 100644 shell/hush_test/hush-misc/empty_for1.right
 create mode 100755 shell/hush_test/hush-misc/empty_for1.tests

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 000000000..46ffcece7
--- /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 000000000..5a2554d54
--- /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 14681aa48..d17f7f29e 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 000000000..46ffcece7
--- /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 000000000..5a2554d54
--- /dev/null
+++ b/shell/hush_test/hush-misc/empty_for1.tests
@@ -0,0 +1,5 @@
+false
+for v; do
+	exit 2
+done
+echo Zero:$?
-- 
cgit v1.2.3-55-g6feb