diff options
author | Peter Stephenson <pws@users.sourceforge.net> | 2008-05-11 19:03:58 +0000 |
---|---|---|
committer | Peter Stephenson <pws@users.sourceforge.net> | 2008-05-11 19:03:58 +0000 |
commit | bab70abe6bcdd28b829adbe582069dc08d9d1c02 (patch) | |
tree | 4cf2d8884979dd471d87662b29e732e13bf305c5 /Src | |
parent | 4bed4f9d0f6429399b82a83d8636d1c8b2810436 (diff) | |
download | zsh-bab70abe6bcdd28b829adbe582069dc08d9d1c02.tar.gz zsh-bab70abe6bcdd28b829adbe582069dc08d9d1c02.tar.xz zsh-bab70abe6bcdd28b829adbe582069dc08d9d1c02.zip |
users/12848: return, break, continue in always block override try block
Diffstat (limited to 'Src')
-rw-r--r-- | Src/loop.c | 14 |
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(); |