Re: removing gotos considered harmful...
From: Herbert Xu <herbert@gondor.apana.org.au>
Date: 2007-01-04 00:35:38
Gerrit Renker [off-list ref] wrote:
size = 0;
sk_for_each(sk2, node, list)
if (++size >= best_size_so_far)
goto next;
best_size_so_far = size;
best = result;
next:;
| and this got converted into:
|
| sk_for_each(sk2, node, head)
| if (++size < best_size_so_far) {
| best_size_so_far = size;
| best = result;
| }
|
| Which does something very very different from the original.
===> Sorry, I fail to see where the two differ. They have the same postcondition
upon loop exit; sk2, node, size, and head are not referenced anywhere in the
code that follows.They're different because the former only updates best_size_so_far after termination while the latter does it from the start. It's like moving the goal-posts while someone's trying to shoot :) Cheers, -- Visit Openswan at http://www.openswan.org/ Email: Herbert Xu ~{PmV>HI~} [off-list ref] Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt