Re: [v2 PATCH] eval: Only restore exit status on exit/return

2018-12-14 Thread Harald van Dijk
On 14/12/2018 10:07, Harald van Dijk wrote: On 14/12/2018 09:47, Herbert Xu wrote: On Fri, Dec 14, 2018 at 09:37:09AM +, Harald van Dijk wrote: Still, that works as well, doesn't it? The control flow is basically the same so the logic in my other message applies. returncmd() doesn't use

Re: [v2 PATCH] eval: Only restore exit status on exit/return

2018-12-14 Thread Harald van Dijk
On 14/12/2018 09:47, Herbert Xu wrote: On Fri, Dec 14, 2018 at 09:37:09AM +, Harald van Dijk wrote: Still, that works as well, doesn't it? The control flow is basically the same so the logic in my other message applies. returncmd() doesn't use exceptions, so you get to dotrap() which

Re: [v2 PATCH] eval: Only restore exit status on exit/return

2018-12-14 Thread Herbert Xu
On Fri, Dec 14, 2018 at 09:37:09AM +, Harald van Dijk wrote: > > Still, that works as well, doesn't it? The control flow is basically the > same so the logic in my other message applies. returncmd() doesn't use > exceptions, so you get to dotrap() which already resets exitstatus if >

Re: [v2 PATCH] eval: Only restore exit status on exit/return

2018-12-14 Thread Herbert Xu
On Fri, Dec 14, 2018 at 08:02:04AM +, Harald van Dijk wrote: > On 14/12/2018 03:10, Herbert Xu wrote: > > > The reason this is needed is to support a naked return. With > > your patch a naked return would either have to always return the > > saved status or the new status. Neither of which

Re: [v2 PATCH] eval: Only restore exit status on exit/return

2018-12-14 Thread Harald van Dijk
On 14/12/2018 08:02, Harald van Dijk wrote: On 14/12/2018 03:10, Herbert Xu wrote: On Sat, Dec 08, 2018 at 03:45:11PM +, Harald van Dijk wrote: --- a/src/eval.c +++ b/src/eval.c @@ -116,10 +116,7 @@ INCLUDE "eval.h"   EXITRESET {   evalskip = 0;   loopnest = 0; -    if (savestatus

Re: [v2 PATCH] eval: Only restore exit status on exit/return

2018-12-14 Thread Harald van Dijk
On 14/12/2018 03:10, Herbert Xu wrote: On Sat, Dec 08, 2018 at 03:45:11PM +, Harald van Dijk wrote: --- a/src/eval.c +++ b/src/eval.c @@ -116,10 +116,7 @@ INCLUDE "eval.h" EXITRESET { evalskip = 0; loopnest = 0; - if (savestatus >= 0) { - exitstatus =

Re: [v2 PATCH] eval: Only restore exit status on exit/return

2018-12-13 Thread Herbert Xu
On Thu, Dec 06, 2018 at 09:35:47PM +, Harald van Dijk wrote: > On 04/12/2018 23:57, Harald van Dijk wrote: > > This has the benefit of fixing one other test case, a small modification > > from one of Martijn Dekker's: > > > >   $SHELL -c 'trap "set -o bad@option" INT; kill -s INT $$' && echo

Re: [v2 PATCH] eval: Only restore exit status on exit/return

2018-12-13 Thread Herbert Xu
On Sat, Dec 08, 2018 at 03:45:11PM +, Harald van Dijk wrote: > > --- a/src/eval.c > +++ b/src/eval.c > @@ -116,10 +116,7 @@ INCLUDE "eval.h" > EXITRESET { > evalskip = 0; > loopnest = 0; > - if (savestatus >= 0) { > - exitstatus = savestatus; > -

Re: [v2 PATCH] eval: Only restore exit status on exit/return

2018-12-08 Thread Harald van Dijk
On 06/12/2018 21:35, Harald van Dijk wrote: On 04/12/2018 23:57, Harald van Dijk wrote: This has the benefit of fixing one other test case, a small modification from one of Martijn Dekker's:    $SHELL -c 'trap "set -o bad@option" INT; kill -s INT $$' && echo BUG Another test case, one that