From a5db1d7354977fe295882ff557e8f5fb23741b13 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Sat, 28 Jul 2018 12:42:08 +0200 Subject: [PATCH] hush: fix another case where empty "for" wasn't setting exitcode to 0 Signed-off-by: Denys Vlasenko --- 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:$? -- 2.25.1