[Cryptography] GnuTLS -- time to look at the diff.
Patrick Chkoreff
patrick at rayservers.net
Fri Mar 7 15:04:47 EST 2014
Harald Koch wrote, On 03/07/2014 01:49 PM:
> Anyone hung up on goto should learn that you can write the same code with:
>
> do {
> if (something fails) {
> break;
> }
>
> ...
>
> } while (false);
>
> /* cleanup code goes here */
>
>
> This has no goto, but it has exactly the same failure modes as the
> goto-laden code (btw, if you're looking for a "goto cleanup;" equivalent
> in Java, this is how you do it).
Yes, I like that. It's a highly malleable technique, in the sense that
you can easily nest it or move it into a separate routine.
It's almost like a code block which returns a value -- a feature that C
doesn't actually have. Instead of a return value, you can declare some
auto variables before the "do", and have the loop body set those
variables fully, or partially in the case of a break. If you make sure
to initialize the auto vars to 0, which is easy to do in C, then the
presence of 0 values can itself indicate certain failure modes in the
code below the "while", after the (one-shot) loop ends.
-- Patrick
More information about the cryptography
mailing list