about summary refs log tree commit diff
path: root/Src/loop.c
diff options
context:
space:
mode:
authorBarton E. Schaefer <schaefer@zsh.org>2015-09-30 20:01:13 -0700
committerBarton E. Schaefer <schaefer@zsh.org>2015-09-30 20:01:13 -0700
commit2bf4f667fb41a8aba139e3ef93b1ebcd9f3e016d (patch)
treece171de2df6ec89cf94520d29afa52c110eb167f /Src/loop.c
parentd1a810b000296bac43b114af526b0787068ae3ba (diff)
downloadzsh-2bf4f667fb41a8aba139e3ef93b1ebcd9f3e016d.tar.gz
zsh-2bf4f667fb41a8aba139e3ef93b1ebcd9f3e016d.tar.xz
zsh-2bf4f667fb41a8aba139e3ef93b1ebcd9f3e016d.zip
36707: distinguish ERR_RETURN value of retflag so that execif() can ignore it in the test sublist
Diffstat (limited to 'Src/loop.c')
-rw-r--r--Src/loop.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/Src/loop.c b/Src/loop.c
index 4def9b652..7d1528efe 100644
--- a/Src/loop.c
+++ b/Src/loop.c
@@ -552,8 +552,12 @@ execif(Estate state, int do_exec)
 	    run = 1;
 	    break;
 	}
-	if (retflag)
-	    break;
+	if (retflag) {
+	    if (retflag == 2)
+		retflag = 0; /* Never ERR_RETURN here */
+	    else
+		break;
+	}
 	s = 1;
 	state->pc = next;
     }