diff options
author | Herbert Xu <herbert@gondor.apana.org.au> | 2014-10-06 21:51:26 +0800 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2014-10-06 21:51:26 +0800 |
commit | 70c16dd30d4cf824aa895e9f6c095fec741c65a8 (patch) | |
tree | 6b0057c3ab08a4eafbf477d6e6ea412e9b807ee0 /src/main.c | |
parent | [BUILTIN] Allow return in loop conditional to set exit status (diff) | |
download | dash-70c16dd30d4cf824aa895e9f6c095fec741c65a8.tar.gz dash-70c16dd30d4cf824aa895e9f6c095fec741c65a8.zip |
[BUILTIN] Return without arguments in a trap should use status outside traps
POSIX now requires that return without arguments in a trap should return the last command status prior to executing traps. This patch implements this behaviour. Incidentally this also changes the behaviour of return without arguments in a loop conditional to use the last exit status in the body as opposed to the last command in the conditional when there is one. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'src/main.c')
-rw-r--r-- | src/main.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/main.c b/src/main.c index 29a258d..00c5e00 100644 --- a/src/main.c +++ b/src/main.c @@ -242,7 +242,7 @@ cmdloop(int top) skip = evalskip; if (skip) { - evalskip &= ~SKIPFUNC; + evalskip &= ~(SKIPFUNC | SKIPFUNCDEF); break; } } |