summaryrefslogtreecommitdiff
path: root/Src
diff options
context:
space:
mode:
Diffstat (limited to 'Src')
-rw-r--r--Src/exec.c2
-rw-r--r--Src/loop.c8
2 files changed, 7 insertions, 3 deletions
diff --git a/Src/exec.c b/Src/exec.c
index da808d6f1..154bbb8db 100644
--- a/Src/exec.c
+++ b/Src/exec.c
@@ -1408,7 +1408,7 @@ sublist_done:
exit(lastval);
}
if (errreturn) {
- retflag = 1;
+ retflag = 2;
breaks = loops;
}
}
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;
}