BTW about the boolean, I just want to ask to be sure about this please:
The alternative would be to use a small goto as it was originally, all it does is basically break twice to outer scope (i.e. it's like "break 2" if C had such feature, or "break label" in some other languages). I suppose that's not acceptable though, right?
I'm asking because a lot of other code-bases are ok with this use of goto (to break out of nested scope to outer scope), so I'm a bit "used" to it but obviously I'll go with what you have to say.