mirror of
https://github.com/subsurface/subsurface.git
synced 2025-01-31 19:13:24 +00:00
Make 'clear_dive()' free the primary dive computer data properly
Our primary dive computer really is special, not just because it's the first one: it's directly embedded in the "struct dive", and so if you just walk the divecomputer list, you'll miss it, because it's not _on_ the list, it is the very head _of_ the list. We had that bug in copy_dive(), and it turns out we have it in clear_dive() too: clear_dive() would free all the dive computers on the list, but not the actual primary one. This is a minor memory leak, no more, so it's not exactly critial, but let's just do it right. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
8acbeed555
commit
2582972121
1 changed files with 8 additions and 1 deletions
|
@ -364,6 +364,7 @@ struct dive *alloc_dive(void)
|
|||
}
|
||||
|
||||
static void free_dc(struct divecomputer *dc);
|
||||
static void free_dc_contents(struct divecomputer *dc);
|
||||
static void free_pic(struct picture *picture);
|
||||
|
||||
/* this is very different from the copy_divecomputer later in this file;
|
||||
|
@ -432,6 +433,7 @@ void clear_dive(struct dive *d)
|
|||
free(d->suit);
|
||||
/* free tags, additional dive computers, and pictures */
|
||||
taglist_free(d->tag_list);
|
||||
free_dc_contents(&d->dc);
|
||||
STRUCTURED_LIST_FREE(struct divecomputer, d->dc.next, free_dc);
|
||||
STRUCTURED_LIST_FREE(struct picture, d->picture_list, free_pic);
|
||||
for (int i = 0; i < MAX_CYLINDERS; i++)
|
||||
|
@ -2479,11 +2481,16 @@ void free_events(struct event *ev)
|
|||
}
|
||||
}
|
||||
|
||||
static void free_dc(struct divecomputer *dc)
|
||||
static void free_dc_contents(struct divecomputer *dc)
|
||||
{
|
||||
free(dc->sample);
|
||||
free((void *)dc->model);
|
||||
free_events(dc->events);
|
||||
}
|
||||
|
||||
static void free_dc(struct divecomputer *dc)
|
||||
{
|
||||
free_dc_contents(dc);
|
||||
free(dc);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue