aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Anton Lundin <glance@acc.umu.se>2014-07-04 08:50:59 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2014-07-04 06:28:21 -0700
commit9c6513b11dd61b723efd873384b53196b5d9d866 (patch)
treeca2b31c91ef672b9d47fe68dfb483a85b356a884
parent5f76185d376624b3713e35ae26284163c0a0cbbf (diff)
downloadsubsurface-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.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/planner.c b/planner.c
index 026581de3..47835d315 100644
--- a/planner.c
+++ b/planner.c
@@ -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;