about summary refs log tree commit diff
path: root/Src/loop.c
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/loop.c
parent4bed4f9d0f6429399b82a83d8636d1c8b2810436 (diff)
downloadzsh-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/loop.c')
-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();