[PATCH 13/17] Free tag lists propperly

Anton Lundin glance at acc.umu.se
Wed Dec 17 23:47:54 PST 2014


The previous taglist_free didn't free the divetag, it only freed the
tag.

Signed-off-by: Anton Lundin <glance at acc.umu.se>
---
 dive.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/dive.c b/dive.c
index ad9d6da..7346393 100644
--- a/dive.c
+++ b/dive.c
@@ -2461,6 +2461,12 @@ static inline void taglist_free_divetag(struct divetag *tag)
 	free(tag);
 }
 
+static inline void tag_entry_free(struct tag_entry *tag_entry)
+{
+	taglist_free_divetag(tag_entry->tag);
+	free(tag_entry);
+}
+
 /* Add a tag to the tag_list, keep the list sorted */
 static struct divetag *taglist_add_divetag(struct tag_entry **tag_list, struct divetag *tag)
 {
@@ -2529,7 +2535,7 @@ struct divetag *taglist_add_tag(struct tag_entry **tag_list, const char *tag)
 
 void taglist_free(struct tag_entry *entry)
 {
-	STRUCTURED_LIST_FREE(struct tag_entry, entry, free)
+	STRUCTURED_LIST_FREE(struct tag_entry, entry, tag_entry_free)
 }
 
 /* Merge src1 and src2, write to *dst */
-- 
2.1.0



More information about the subsurface mailing list