Am 03/07/2014 06:23 AM, schrieb Milan Broz: > On 03/06/2014 09:39 PM, Lars Winterfeld wrote: >> Hi, >> >> in light of the latest "goto fail"s out there, would you reject a patch >> replacing all 328 gotos with their semantic equivalents from structured >> C programming? > > cryptsetup code uss goto for only one purpose: to have only one exit > place from a function (with check for errors, release memory). > > Replacing it with anything else means duplicating of lot of code. I agree that code duplication is undesirable. I can think of two alternatives to goto that do not duplicate code. The first is to introduce a one-time loop like this: do { // foo if(a) break; // was: goto out; // bar if(b) break; // was: goto out; // "all good" code return 0; } while(0); // was: out: // "on error" code return -1; The second alternative would be to introduce a new function like int foo_failed(struct bar* p) { // clean p return -1; } and then inside the "int foo()": if(a) return foo_failed(p); instead of if(a) goto fail; Like with indentation, I think this is just a question of coding style. Changes there don't make the program better, it just makes the code nicer to read in the eyes of some people. It's up to you. I would do the work. What do you think? Cheers, Lars
Attachment:
signature.asc
Description: OpenPGP digital signature
_______________________________________________ dm-crypt mailing list dm-crypt@xxxxxxxx http://www.saout.de/mailman/listinfo/dm-crypt