diff options
author | Anton Lundin <glance@acc.umu.se> | 2014-07-04 08:50:59 +0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2014-07-04 06:28:21 -0700 |
commit | 9c6513b11dd61b723efd873384b53196b5d9d866 (patch) | |
tree | ca2b31c91ef672b9d47fe68dfb483a85b356a884 | |
parent | 5f76185d376624b3713e35ae26284163c0a0cbbf (diff) | |
download | subsurface-9c6513b11dd61b723efd873384b53196b5d9d866.tar.gz |
Clear out old events in create_dive_from_plan
Previous code where accumulating events from each iteration of the
planning. This code clears the old ones before adding new ones.
Fixes #595
[Dirk Hohndel: removed printf, updated comment, slightly moved the code,
added parenthesis to silence warning]
Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r-- | planner.c | 8 |
1 files changed, 7 insertions, 1 deletions
@@ -246,6 +246,7 @@ static void create_dive_from_plan(struct diveplan *diveplan) struct divecomputer *dc; struct sample *sample; struct gasmix oldgasmix; + struct event *ev; cylinder_t *cyl; int oldpo2 = 0; int lasttime = 0; @@ -257,13 +258,18 @@ static void create_dive_from_plan(struct diveplan *diveplan) printf("in create_dive_from_plan\n"); dump_plan(diveplan); #endif - // reset the cylinders and clear out the samples of the displayed dive so we can restart + // reset the cylinders and clear out the samples and events of the + // displayed dive so we can restart reset_cylinders(&displayed_dive); dc = &displayed_dive.dc; free(dc->sample); dc->sample = NULL; dc->samples = 0; dc->alloc_samples = 0; + while ((ev = dc->events)) { + dc->events = dc->events->next; + free(ev); + } dp = diveplan->dp; cyl = &displayed_dive.cylinder[0]; oldgasmix = cyl->gasmix; |