"Roy T. Fielding" wrote:
>
> I don't understand why you didn't simply reverse the test and
> enclose the frequent case inside the if {} block.
D'oh! of course! commit coming shortly.
> I assume it
> was just to avoid indenting a large block of code, which is not
> sufficient justification for a goto.
No, it just didn't occur to me at the time. I wouldn't want to use that
technique for all of the error cases though. Then the indentation would get out
of hand.
I've seen kernel level code that used a pattern like:
if (funky_error1) then {
goto exit_with_error1;
}
do important stuff;
if (funky_error2) then {
goto exit_with_error2;
}
do more stuff;
etc etc;
...which resulted in cache friendly code that this goto agnostic didn't have any
trouble reading. I guess that pattern imprinted itself on my brain.
Greg