Don't use the same variable name for loop and temp storage

Oops. Moving the check to the beginning of the function in order to avoid
partial execution in commit 69036a1bb7 ("Avoid resource leak by bailing
early") had a nasty side effect. Since Linus used 'i' both to hold the
dive number and as a loop variable, by moving this to the top of the
function the dive nr was overwritten which caused all kinds of problems.

My bad - but of course you shouldn't mix loop variables with meaningful
variables, either...

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2015-10-04 12:02:54 +01:00
parent 769365b4db
commit 76b31aa76a

12
dive.c
View file

@ -2851,13 +2851,13 @@ static struct dive *create_new_copy(struct dive *from)
*/ */
static int split_dive_at(struct dive *dive, int a, int b) static int split_dive_at(struct dive *dive, int a, int b)
{ {
int i, t; int i, t, nr;
struct dive *d1, *d2; struct dive *d1, *d2;
struct divecomputer *dc1, *dc2; struct divecomputer *dc1, *dc2;
struct event *event, **evp; struct event *event, **evp;
/* if we can't find the dive in the dive list, don't bother */ /* if we can't find the dive in the dive list, don't bother */
if ((i = get_divenr(dive)) < 0) if ((nr = get_divenr(dive)) < 0)
return 0; return 0;
/* We're not trying to be efficient here.. */ /* We're not trying to be efficient here.. */
@ -2920,8 +2920,8 @@ static int split_dive_at(struct dive *dive, int a, int b)
add_dive_to_trip(d2, dive->divetrip); add_dive_to_trip(d2, dive->divetrip);
} }
delete_single_dive(i); delete_single_dive(nr);
add_single_dive(i, d1); add_single_dive(nr, d1);
/* /*
* Was the dive numbered? If it was the last dive, then we'll * Was the dive numbered? If it was the last dive, then we'll
@ -2929,12 +2929,12 @@ static int split_dive_at(struct dive *dive, int a, int b)
* Otherwise the tail is unnumbered. * Otherwise the tail is unnumbered.
*/ */
if (d2->number) { if (d2->number) {
if (dive_table.nr == i+1) if (dive_table.nr == nr + 1)
d2->number++; d2->number++;
else else
d2->number = 0; d2->number = 0;
} }
add_single_dive(i+1, d2); add_single_dive(nr + 1, d2);
mark_divelist_changed(true); mark_divelist_changed(true);