Prevent time travel in planner dive edit

If the user enters an absolute time that is before the previous waypoint,
silently assume that this is a relative time.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2013-01-07 16:21:26 -08:00
parent 7e1f0d243b
commit 7a18edddbb

View file

@ -218,9 +218,10 @@ struct divedatapoint *get_nth_dp(struct diveplan *diveplan, int idx)
void add_duration_to_nth_dp(struct diveplan *diveplan, int idx, int duration, gboolean is_rel) void add_duration_to_nth_dp(struct diveplan *diveplan, int idx, int duration, gboolean is_rel)
{ {
struct divedatapoint *pdp, *dp = get_nth_dp(diveplan, idx); struct divedatapoint *pdp, *dp = get_nth_dp(diveplan, idx);
if (idx > 0 && is_rel) { if (idx > 0) {
pdp = get_nth_dp(diveplan, idx - 1); pdp = get_nth_dp(diveplan, idx - 1);
duration += pdp->time; if (is_rel || dp->time <= pdp->time)
duration += pdp->time;
} }
dp->time = duration; dp->time = duration;
} }