summaryrefslogtreecommitdiff
path: root/Src/loop.c
diff options
context:
space:
mode:
authorPeter Stephenson <pws@zsh.org>2016-12-05 11:21:01 +0000
committerPeter Stephenson <pws@zsh.org>2016-12-05 11:21:01 +0000
commitc03228f9ed28dfaa9ded49eabb93c04def5ac547 (patch)
tree7ea3ee905bf9531dce1e4e46b206ac9eb438d566 /Src/loop.c
parentf71de84f1d9f7c2d63226a2e5534fc12d05ec716 (diff)
downloadzsh-c03228f9ed28dfaa9ded49eabb93c04def5ac547.tar.gz
zsh-c03228f9ed28dfaa9ded49eabb93c04def5ac547.zip
Extra case for ERR_RETURN and ERR_EXIT.
Don't trigger just because status is non-zero at end of complex shell construct as this may be a case we've already suppressed.
Diffstat (limited to 'Src/loop.c')
-rw-r--r--Src/loop.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/Src/loop.c b/Src/loop.c
index 367c0df5c..ae87b2f5f 100644
--- a/Src/loop.c
+++ b/Src/loop.c
@@ -208,6 +208,7 @@ execfor(Estate state, int do_exec)
loops--;
simple_pline = old_simple_pline;
state->pc = end;
+ this_noerrexit = 1;
return lastval;
}
@@ -335,6 +336,7 @@ execselect(Estate state, UNUSED(int do_exec))
loops--;
simple_pline = old_simple_pline;
state->pc = end;
+ this_noerrexit = 1;
return lastval;
}
@@ -472,6 +474,7 @@ execwhile(Estate state, UNUSED(int do_exec))
popheap();
loops--;
state->pc = end;
+ this_noerrexit = 1;
return lastval;
}
@@ -523,6 +526,7 @@ execrepeat(Estate state, UNUSED(int do_exec))
loops--;
simple_pline = old_simple_pline;
state->pc = end;
+ this_noerrexit = 1;
return lastval;
}
@@ -573,6 +577,7 @@ execif(Estate state, int do_exec)
lastval = 0;
}
state->pc = end;
+ this_noerrexit = 1;
return lastval;
}
@@ -682,6 +687,7 @@ execcase(Estate state, int do_exec)
if (!anypatok)
lastval = 0;
+ this_noerrexit = 1;
return lastval;
}