aboutsummaryrefslogtreecommitdiffstats
path: root/core/divelist.c
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2018-09-27 21:55:03 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2018-09-29 15:24:08 -0700
commitd3d06bc580b2a344806396622edd6b7adbdd08cc (patch)
treea01e60a760532364e017b9a97e3e3d62c874e285 /core/divelist.c
parent574065b31430245a66808561b1b95139c4cd19f2 (diff)
downloadsubsurface-d3d06bc580b2a344806396622edd6b7adbdd08cc.tar.gz
Cleanup: split out free_dive() function from delete_single_dive()
Currently, we can only delete dives that are indexed in the main dive table. In the future, we will have to delete dives outside of this table (e.g. for undo). Therefore, split out the free_dive() function from delete_single_dive(), which takes an index into the main dive table. In the process, adopt the dive freeing-code from clear_dive(), which frees more data than the code in delete_single_dive(). This potentially fixes a memory-leak. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'core/divelist.c')
-rw-r--r--core/divelist.c9
1 files changed, 1 insertions, 8 deletions
diff --git a/core/divelist.c b/core/divelist.c
index 62af3120c..84290e6b6 100644
--- a/core/divelist.c
+++ b/core/divelist.c
@@ -931,14 +931,7 @@ void delete_single_dive(int idx)
for (i = idx; i < dive_table.nr - 1; i++)
dive_table.dives[i] = dive_table.dives[i + 1];
dive_table.dives[--dive_table.nr] = NULL;
- /* free all allocations */
- free(dive->dc.sample);
- free((void *)dive->notes);
- free((void *)dive->divemaster);
- free((void *)dive->buddy);
- free((void *)dive->suit);
- taglist_free(dive->tag_list);
- free(dive);
+ free_dive(dive);
}
struct dive **grow_dive_table(struct dive_table *table)