summaryrefslogtreecommitdiff
path: root/except.c
diff options
context:
space:
mode:
authorBert Münnich <ber.t@posteo.de>2016-02-26 23:32:48 +0100
committerBert Münnich <ber.t@posteo.de>2016-02-26 23:43:08 +0100
commiteb594861d41090b53272a6bc8941bf2075c4311f (patch)
tree9851f34c30fe44b485188f3e12e7461f0a09a9c5 /except.c
parentc95bdf7ce9be6c6ed8ca4b0a474fc4947836eba9 (diff)
Break out of loops through local variable blocks
This code: while () { var = 1 { break } } caused an 'break outside of loop' error. Handling eVarstack like eArena in rc_raise() fixes this.
Diffstat (limited to 'except.c')
-rw-r--r--except.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/except.c b/except.c
index 8f20676..37696c4 100644
--- a/except.c
+++ b/except.c
@@ -66,7 +66,7 @@ extern void rc_raise(ecodes e) {
exit(1); /* child processes exit on an error/signal */
for (; estack != NULL; estack = estack->prev)
if (estack->e != e) {
- if (e == eBreak && estack->e != eArena)
+ if (e == eBreak && estack->e != eArena && estack->e != eVarstack)
rc_error("break outside of loop");
else if (e == eReturn && estack->e == eError) /* can return from loops inside functions */
rc_error("return outside of function");