divelist.c: Fix possible NULL pointer deref.

calculate_cns():
The check if prev_dive is NULL should be before calling
prev_dive->when.

Reported by the program cppcheck.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Lubomir I. Ivanov 2013-12-11 15:26:47 +02:00 committed by Dirk Hohndel
parent ea895fbecc
commit f09afad5a0

View file

@ -266,10 +266,12 @@ static int calculate_cns(struct dive *dive)
divenr = get_divenr(dive);
if (divenr) {
prev_dive = get_dive(divenr -1 );
endtime = prev_dive->when + prev_dive->duration.seconds;
if (prev_dive && dive->when < (endtime + 3600 * 12)) {
cns = calculate_cns(prev_dive);
cns = cns * 1/pow(2, (dive->when - endtime) / (90.0 * 60.0));
if (prev_dive) {
endtime = prev_dive->when + prev_dive->duration.seconds;
if (dive->when < (endtime + 3600 * 12)) {
cns = calculate_cns(prev_dive);
cns = cns * 1/pow(2, (dive->when - endtime) / (90.0 * 60.0));
}
}
}
/* Caclulate the cns for each sample in this dive and sum them */