From cf98b0c0857f4e83caa1c8aca95ad73d9b723e2f Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Tue, 25 Oct 2016 18:19:39 +0200 Subject: [PATCH] ash: [EVAL] Check exit for eval NSUBSHELL Upstream commit: Date: Tue, 6 Jul 2010 17:50:37 +0800 [PATCH 161/277] [EVAL] Check exit for eval NSUBSHELL Example: $ dash -c 'set -e; (false); echo here' here With this commit, dash exits 1 before echo. The bug was reported by Stefan Fritsch through http://bugs.debian.org/514863 Signed-off-by: Gerrit Pape Signed-off-by: Herbert Xu This was fixed differently in our tree: Date: Fri Sep 16 19:04:02 2016 +0000 ash: exit after subshell error when errexit option is set When "set -e" option is on, shell must exit when any command fails, including compound commands of the form (compound-list) executed in a subshell. Bash and dash shells have this behaviour. Also add a corresponding testcase. Signed-off-by: Rostislav Skudnov Signed-off-by: Denys Vlasenko Signed-off-by: Denys Vlasenko --- shell/ash.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/shell/ash.c b/shell/ash.c index 79439bf3e..9dcf80975 100644 --- a/shell/ash.c +++ b/shell/ash.c @@ -8610,11 +8610,9 @@ evaltree(union node *n, int flags) evalfn = evalloop; goto calleval; case NSUBSHELL: - evalfn = evalsubshell; - goto checkexit; case NBACKGND: evalfn = evalsubshell; - goto calleval; + goto checkexit; case NPIPE: evalfn = evalpipe; goto checkexit;