summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Willem Ferguson <willemferguson@zoology.up.ac.za>2018-04-08 14:37:30 +0200
committerGravatar Lubomir I. Ivanov <neolit123@gmail.com>2018-05-14 23:47:00 +0300
commit9c24d6bef816c05992c59b45d32fcb4fe256d5a3 (patch)
tree25eae905b1bc428bd3de1bf2fbaffdf86df38987
parent718f9811b71f3fc7d131b9fd27f39b0f2082623f (diff)
downloadsubsurface-9c24d6bef816c05992c59b45d32fcb4fe256d5a3.tar.gz
Fix bug for CCR dive bailout
Under some conditions get_current_divemode() (in dive.c) returns an erroneous divemode. This happens when there are several events at the very beginning of the dive, as can happen in some CCR dive logs. This commit fixes that bug. Signed-off-by: Willem Ferguson <willemferguson@zoology.up.ac.za>
-rw-r--r--core/dive.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/core/dive.c b/core/dive.c
index 950f4b336..d75de418e 100644
--- a/core/dive.c
+++ b/core/dive.c
@@ -253,7 +253,8 @@ enum dive_comp_type get_current_divemode(struct divecomputer *dc, int time, stru
ev = dc ? dc->events : NULL;
}
while (ev && ev->time.seconds < time) {
- *divemode = (enum dive_comp_type) ev->value;
+ if (ev != dc->events)
+ *divemode = (enum dive_comp_type) ev->value;
ev = get_next_event(ev->next, "modechange");
}
*evp = ev;