[BUILTIN] Allow return in loop conditional to set exit status
commitf14b4626eb5c1c2fda137e7d1520c5f1cb7e85c4
authorHerbert Xu <herbert@gondor.apana.org.au>
Mon, 6 Oct 2014 13:22:43 +0000 (6 21:22 +0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Mon, 6 Oct 2014 13:22:43 +0000 (6 21:22 +0800)
tree490ba8c3ec141fd43fd47419d7b33ace7361b6ec
parent598d300ffa0b9542a88feae900ccdd29e35374cf
[BUILTIN] Allow return in loop conditional to set exit status

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=332954

When return is used in a loop conditional the exit status will
be lost because we always set the exit status at the end of the
loop to that of the last command executed in the body.

This is counterintuitive and contrary to what most other shells do.

This patch fixes this by always preserving the exit status of
return when it is used in a loop conditional.

The patch was originally written by Gerrit Pape <pape@smarden.org>.

Reported-by: Stephane Chazelas <stephane_chazelas@yahoo.fr>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
ChangeLog
src/eval.c