summaryrefslogtreecommitdiff
path: root/Src
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2008-05-11 19:03:58 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2008-05-11 19:03:58 +0000
commitbab70abe6bcdd28b829adbe582069dc08d9d1c02 (patch)
tree4cf2d8884979dd471d87662b29e732e13bf305c5 /Src
parent4bed4f9d0f6429399b82a83d8636d1c8b2810436 (diff)
downloadzsh-bab70abe6bcdd28b829adbe582069dc08d9d1c02.tar.gz
zsh-bab70abe6bcdd28b829adbe582069dc08d9d1c02.zip
users/12848: return, break, continue in always block override try block
Diffstat (limited to 'Src')
-rw-r--r--Src/loop.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/Src/loop.c b/Src/loop.c
index 9e19f3f93..3a6296d45 100644
--- a/Src/loop.c
+++ b/Src/loop.c
@@ -631,7 +631,7 @@ exectry(Estate state, int do_exec)
{
Wordcode end, always;
int endval;
- int save_retflag, save_breaks, save_loops, save_contflag;
+ int save_retflag, save_breaks, save_contflag;
zlong save_try_errflag, save_try_tryflag;
end = state->pc + WC_TRY_SKIP(state->pc[-1]);
@@ -664,8 +664,6 @@ exectry(Estate state, int do_exec)
retflag = 0;
save_breaks = breaks;
breaks = 0;
- save_loops = loops;
- loops = 0;
save_contflag = contflag;
contflag = 0;
@@ -674,10 +672,12 @@ exectry(Estate state, int do_exec)
errflag = try_errflag ? 1 : 0;
try_errflag = save_try_errflag;
- retflag = save_retflag;
- breaks = save_breaks;
- loops = save_loops;
- contflag = save_contflag;
+ if (!retflag)
+ retflag = save_retflag;
+ if (!breaks)
+ breaks = save_breaks;
+ if (!contflag)
+ contflag = save_contflag;
cmdpop();
popheap();