From d9f2b537afcefb57e224a6d1527537a54bb60688 Mon Sep 17 00:00:00 2001 From: "Robert C. Helling" Date: Mon, 29 Oct 2018 23:55:38 +0100 Subject: [PATCH] Fixed get_gas_at_time for equal times This fixes a subtle bug introduced in 5c4569247a31c which unified two functions finding the gasmix at a given time during the dive. There was a slight difference, though: Does a gaschange exactly at that time count or not? For the planner to work, the answer has to be in the affirmative. Signed-off-by: Robert C. Helling --- CHANGELOG.md | 1 + core/dive.c | 2 +- dives/test51.xml | 76 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 dives/test51.xml diff --git a/CHANGELOG.md b/CHANGELOG.md index bcf6cbe8e..e0b2ee87a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,4 @@ +- Fix a bug in planner for dives with manual gas changes. - Mobile: add full text filtering of the dive list - Desktop: don't add dive-buddy or dive-master when tabbing through fields - Filter: don't recalculate all filters on dive list-modifying operations diff --git a/core/dive.c b/core/dive.c index ae411d494..255f113fe 100644 --- a/core/dive.c +++ b/core/dive.c @@ -4447,7 +4447,7 @@ struct gasmix get_gasmix(const struct dive *dive, const struct divecomputer *dc, res = gasmix; } - while (ev && ev->time.seconds < time) { + while (ev && ev->time.seconds <= time) { res = get_gasmix_from_event(dive, ev); ev = get_next_event(ev->next, "gaschange"); } diff --git a/dives/test51.xml b/dives/test51.xml new file mode 100644 index 000000000..38c9ce8c7 --- /dev/null +++ b/dives/test51.xml @@ -0,0 +1,76 @@ + + + + + + + + + + This dive demostrates a planner bug. Edit this dive in planner. If the dive turns red for a ceiling violation, there is a bug in detecting the correct gasmix at times. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +