diff options
author | Rostislav Skudnov <rostislav@tuxera.com> | 2016-09-16 19:04:02 +0000 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2016-09-17 23:28:23 +0200 |
commit | 204c7fb2293f67f6277f917e854188f5540e6955 (patch) | |
tree | 20a880dd638d368d1e3a3cefd75f4756e66a04b3 /shell/ash.c | |
parent | b157eb13cbc55338a3b82343c1cb2960af82cd17 (diff) | |
download | busybox-w32-204c7fb2293f67f6277f917e854188f5540e6955.tar.gz busybox-w32-204c7fb2293f67f6277f917e854188f5540e6955.tar.bz2 busybox-w32-204c7fb2293f67f6277f917e854188f5540e6955.zip |
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@tuxera.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'shell/ash.c')
-rw-r--r-- | shell/ash.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/shell/ash.c b/shell/ash.c index bffb4a245..a885514d3 100644 --- a/shell/ash.c +++ b/shell/ash.c | |||
@@ -8408,6 +8408,8 @@ evaltree(union node *n, int flags) | |||
8408 | evalfn = evalloop; | 8408 | evalfn = evalloop; |
8409 | goto calleval; | 8409 | goto calleval; |
8410 | case NSUBSHELL: | 8410 | case NSUBSHELL: |
8411 | evalfn = evalsubshell; | ||
8412 | goto checkexit; | ||
8411 | case NBACKGND: | 8413 | case NBACKGND: |
8412 | evalfn = evalsubshell; | 8414 | evalfn = evalsubshell; |
8413 | goto calleval; | 8415 | goto calleval; |