Re: goto patch for cryptsetup?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Device Mapper Devel]     [Fedora Desktop]     [ATA RAID]     [Fedora Marketing]     [Fedora Packaging]     [Fedora SELinux]     [Yosemite News]     [KDE Users]     [Fedora Tools]     [Fedora Docs]

  Powered by Linux