summaryrefslogtreecommitdiffstats
path: root/core/dive.h
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2018-09-10 20:40:25 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2018-09-10 14:23:59 -0700
commit6e4a2538968d945d471489270136c4891b47b270 (patch)
treedbe442feff12bdb1414712e926eac593deb8a1d9 /core/dive.h
parentc75f53a7a802fd9745376b837f6c307ba82d5b7b (diff)
downloadsubsurface-6e4a2538968d945d471489270136c4891b47b270.tar.gz
Profile: fix SAC calculation for air dives
Commit f5b11daffd6f240268ce78d72c64be43670988ea changed gasmix arguments and return values to be passed by value instead of using pointers. Notably, get_gasmix() is fed a default-value and returns a new value. In the old code, NULL was passed in in a first loop iteration and non-NULL was always returned in the first iteration. Thus, an equality comparison of passed-in an returned gasmix would always fail in the first loop iteration. The new code passed in air as default. Now if air was also returned, then the matching gases were not calculated in calculate_sac(). To revert to the old behavior, pass in an invalid gasmix. Moreover, give names to the invalid and air gasmixes. Reported-by: tormento <turment@gmail.com> Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'core/dive.h')
-rw-r--r--core/dive.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/core/dive.h b/core/dive.h
index 0cc3150ce..8b8b9fbf0 100644
--- a/core/dive.h
+++ b/core/dive.h
@@ -34,10 +34,14 @@ extern const char *cylinderuse_text[];
extern const char *divemode_text_ui[];
extern const char *divemode_text[];
+// o2 == 0 && he == 0 -> air
+// o2 < 0 -> invalid
struct gasmix {
fraction_t o2;
fraction_t he;
};
+static const struct gasmix gasmix_invalid = { { -1 }, { -1 } };
+static const struct gasmix gasmix_air = { { 0 }, { 0 } };
typedef struct
{