summaryrefslogtreecommitdiff
path: root/Src/loop.c
diff options
context:
space:
mode:
Diffstat (limited to 'Src/loop.c')
-rw-r--r--Src/loop.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/Src/loop.c b/Src/loop.c
index f65c72bf4..367c0df5c 100644
--- a/Src/loop.c
+++ b/Src/loop.c
@@ -439,13 +439,12 @@ execwhile(Estate state, UNUSED(int do_exec))
if (!((lastval == 0) ^ isuntil)) {
if (breaks)
breaks--;
- lastval = oldval;
+ if (!retflag)
+ lastval = oldval;
break;
}
- if (retflag) {
- lastval = oldval;
+ if (retflag)
break;
- }
/* In case the loop body is also a functional no-op,
* make sure signal handlers recognize ^C as above. */