From f14b4626eb5c1c2fda137e7d1520c5f1cb7e85c4 Mon Sep 17 00:00:00 2001 From: Herbert Xu Date: Mon, 6 Oct 2014 21:22:43 +0800 Subject: [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 . Reported-by: Stephane Chazelas Signed-off-by: Herbert Xu --- src/eval.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/eval.c b/src/eval.c index daccf3d..7b341f3 100644 --- a/src/eval.c +++ b/src/eval.c @@ -387,8 +387,9 @@ evalloop(union node *n, int flags) status = exitstatus; skip = skiploop(); } while (!(skip & ~SKIPCONT)); + if (skip != SKIPFUNC) + exitstatus = status; loopnest--; - exitstatus = status; } -- cgit 1.4.1 /log/.mplayer/config'>
Commit message (Collapse)Author
2025-11-19Bilingualize pronouns regexJune McEnroe
2025-11-19Hardcode a follower IDJune McEnroe
2025-11-18Add pronouns bot scriptJune McEnroe
2025-08-27Update DESCRIPTION of myselfJune McEnroe
2025-08-18Publish "time"June McEnroe
2025-08-18Add a bunch of film roll metadataJune McEnroe
I'm not sure why I even do this.
2025-08-18Add a draftJune McEnroe