From 28a54981d557597c63b625d862066bce455e285d Mon Sep 17 00:00:00 2001 From: Mauro Carvalho Chehab Date: Sun, 17 Nov 2013 09:31:00 -0200 Subject: [PATCH] libdvbv5/descriptors: descriptors data should always be freed It is up to each descriptor's free function to free data allocated during its init phase. However, the container of the descriptor itself was allocated by dvb_parse_descriptors(). So, it should be up to dvb_free_descriptors() to deallocate. This error was detected by Valgrind. Signed-off-by: Mauro Carvalho Chehab --- lib/libdvbv5/descriptors.c | 3 +-- lib/libdvbv5/descriptors/desc_extension.c | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/lib/libdvbv5/descriptors.c b/lib/libdvbv5/descriptors.c index 1297cda..992a57d 100644 --- a/lib/libdvbv5/descriptors.c +++ b/lib/libdvbv5/descriptors.c @@ -145,8 +145,7 @@ void dvb_free_descriptors(struct dvb_desc **list) desc = desc->next; if (dvb_descriptors[tmp->type].free) dvb_descriptors[tmp->type].free(tmp); - else - free(tmp); + free(tmp); } *list = NULL; } diff --git a/lib/libdvbv5/descriptors/desc_extension.c b/lib/libdvbv5/descriptors/desc_extension.c index a3c7a35..39d6e56 100644 --- a/lib/libdvbv5/descriptors/desc_extension.c +++ b/lib/libdvbv5/descriptors/desc_extension.c @@ -171,7 +171,6 @@ void extension_descriptor_free(struct dvb_desc *descriptor) desc = desc->next; if (dvb_descriptors[tmp->type].free) dvb_descriptors[tmp->type].free(tmp); - else - free(tmp); + free(tmp); } } -- 2.7.4