mirror of
https://github.com/subsurface/subsurface.git
synced 2024-12-01 06:30:26 +00:00
Profile.c: Fix stepping through loop between sample points
If adjacent samples at times t0 and t1 are greater than time_stepsize apart, this for loop steps through the time between samples to calculate tissue tolerance incrementally at each intermediate time, j, (and interpolated depth). If the difference between t1 and t0 is not a multiple of time_stepsize, immediately before the final increment time_stepsize needs to be reduced to t1 - j so that j = t1 in the final increment. This is necessary when: t1 - j < time_stepsize (i.e. we are about to start the final increment, and time_stepsize needs to be reduced), and j < t1 (i.e. we didn't just do the final increment - without this condition time_stepsize would be set to zero, leading to an infinite loop) Previously, the check was (j - t0 < time_stepsize), which always returns false. Signed-off-by: Rick Walsh <rickmwalsh@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
6d7faa106f
commit
9238a7f0df
1 changed files with 2 additions and 2 deletions
|
@ -857,8 +857,8 @@ void calculate_deco_information(struct dive *dive, struct divecomputer *dc, stru
|
|||
double min_pressure = add_segment(depth_to_mbar(depth, dive) / 1000.0,
|
||||
&dive->cylinder[entry->cylinderindex].gasmix, time_stepsize, entry->o2pressure.mbar, dive, entry->sac);
|
||||
tissue_tolerance = min_pressure;
|
||||
if (j - t0 < time_stepsize)
|
||||
time_stepsize = j - t0;
|
||||
if ((t1 - j < time_stepsize) && (j < t1))
|
||||
time_stepsize = t1 - j;
|
||||
}
|
||||
if (t0 == t1)
|
||||
entry->ceiling = (entry - 1)->ceiling;
|
||||
|
|
Loading…
Reference in a new issue