summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2015-09-20 07:54:28 -0700
committerGravatar Dirk Hohndel <dirk@hohndel.org>2015-09-20 07:54:28 -0700
commita77d1a3f56c5c5da57dd817507979f63ac6e4761 (patch)
tree97ecf07f0b638b077e6d6dc2800c5b31b8d00863
parente4d2092f339008b2a0180e57501e85683f20aba0 (diff)
downloadsubsurface-a77d1a3f56c5c5da57dd817507979f63ac6e4761.tar.gz
Warn about non-monotonous plot data and prevent infinite loop
The data are supposed to be sorted with monotonous time stamp. And while the actual bug that causes this needs to be identified and fixed, this is at least a stop gap measure that shows the issue and prevents Subsurface from hanging. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--profile.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/profile.c b/profile.c
index 158517e2d..b676dc5b0 100644
--- a/profile.c
+++ b/profile.c
@@ -849,6 +849,12 @@ void calculate_deco_information(struct dive *dive, struct divecomputer *dc, stru
(prefs.gflow - prefs.gfhigh) +
prefs.gfhigh) *
(100.0 - AMB_PERCENTAGE) / 100.0 + AMB_PERCENTAGE;
+ if (t0 > t1) {
+ fprintf(stderr, "non-monotonous dive stamps %d %d\n", t0, t1);
+ int xchg = t1;
+ t1 = t0;
+ t0 = xchg;
+ }
if (t0 != t1 && t1 - t0 < time_stepsize)
time_stepsize = t1 - t0;
for (j = t0 + time_stepsize; j <= t1; j += time_stepsize) {