From 10bedf02d03ab0d855385abd233881f56ab7e023 Mon Sep 17 00:00:00 2001 From: "Robert C. Helling" Date: Fri, 13 Nov 2020 09:38:08 +0100 Subject: Gracefully handle infinite MND for oxygen When breathing pure oxygen and considering it not narcotic, there is not maximal narcotic depth and the formula divides by zero. So better, handle this case separately. Fixes #3080 Signed-off-by: Robert C. Helling --- core/dive.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'core/dive.c') diff --git a/core/dive.c b/core/dive.c index 177c91990..6ac70da71 100644 --- a/core/dive.c +++ b/core/dive.c @@ -3253,7 +3253,11 @@ depth_t gas_mnd(struct gasmix mix, depth_t end, const struct dive *dive, int rou int maxambient = prefs.o2narcotic ? (int)lrint(ppo2n2.mbar / (1 - get_he(mix) / 1000.0)) : - (int)lrint(ppo2n2.mbar * N2_IN_AIR / get_n2(mix)); + get_n2(mix) > 0 ? + (int)lrint(ppo2n2.mbar * N2_IN_AIR / get_n2(mix)) + : + // Actually: Infinity + 1000000; rounded_depth.mm = (int)lrint(((double)mbar_to_depth(maxambient, dive)) / roundto) * roundto; return rounded_depth; } -- cgit v1.2.3-70-g09d2