From eb594861d41090b53272a6bc8941bf2075c4311f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bert=20M=C3=BCnnich?= Date: Fri, 26 Feb 2016 23:32:48 +0100 Subject: 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. --- except.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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"); -- cgit v1.2.3