I've extensively written code like this, though I don't seem to see others do it very often.
I suppose if you really hate gotos, then a "do { } while(0);" with a "break;" in the middle of it is equivalent.
There's just too much cleanup, such that avoiding gotos means you're either nested 200 columns into the screen or have half your function filled with partially-duplicated cleanup code.
There's just too much cleanup, such that avoiding gotos means you're either nested 200 columns into the screen or have half your function filled with partially-duplicated cleanup code.