[git commit] ash: [EVAL] Check exit for eval NSUBSHELL

Denys Vlasenko vda.linux at googlemail.com
Tue Oct 25 16:19:39 UTC 2016


commit: https://git.busybox.net/busybox/commit/?id=cf98b0c0857f4e83caa1c8aca95ad73d9b723e2f
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master

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 <pape at smarden.org>
    Signed-off-by: Herbert Xu <herbert at gondor.apana.org.au>

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 <rostislav at tuxera.com>
    Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 shell/ash.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/shell/ash.c b/shell/ash.c
index 79439bf..9dcf809 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;


More information about the busybox-cvs mailing list