diff options
| author | Bert Münnich <ber.t@posteo.de> | 2016-02-26 23:32:48 +0100 |
|---|---|---|
| committer | Bert Münnich <ber.t@posteo.de> | 2016-02-26 23:43:08 +0100 |
| commit | eb594861d41090b53272a6bc8941bf2075c4311f (patch) | |
| tree | 9851f34c30fe44b485188f3e12e7461f0a09a9c5 | |
| parent | c95bdf7ce9be6c6ed8ca4b0a474fc4947836eba9 (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.
| -rw-r--r-- | except.c | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -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"); |