ash: fix EXEXEC status clobbering
evalcommand always clobbers the exit status in case of an EXEXEC which means that exec always fails with exit status 2 regardless of what it actually returns. This patch adds the missing check for EXEXEC so that the correct exit status is preserved. It causes the test ash-misc/exec.tests to succeed. Based on commit 7f68426 in dash git, by Herbert Xu. Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
e939856c87
commit
8c55dc79a7
@ -9432,7 +9432,7 @@ evalcommand(union node *cmd, int flags)
|
|||||||
if (evalbltin(cmdentry.u.cmd, argc, argv)) {
|
if (evalbltin(cmdentry.u.cmd, argc, argv)) {
|
||||||
int exit_status;
|
int exit_status;
|
||||||
int i = exception_type;
|
int i = exception_type;
|
||||||
if (i == EXEXIT)
|
if (i == EXEXIT || i == EXEXEC)
|
||||||
goto raise;
|
goto raise;
|
||||||
exit_status = 2;
|
exit_status = 2;
|
||||||
if (i == EXINT)
|
if (i == EXINT)
|
||||||
|
Loading…
Reference in New Issue
Block a user