libdvbv5/descriptors: descriptors data should always be freed
authorMauro Carvalho Chehab <m.chehab@samsung.com>
Sun, 17 Nov 2013 11:31:00 +0000 (09:31 -0200)
committerMauro Carvalho Chehab <m.chehab@samsung.com>
Wed, 27 Nov 2013 11:24:40 +0000 (09:24 -0200)
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 <m.chehab@samsung.com>
lib/libdvbv5/descriptors.c
lib/libdvbv5/descriptors/desc_extension.c

index 1297cda..992a57d 100644 (file)
@@ -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;
 }
index a3c7a35..39d6e56 100644 (file)
@@ -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);
        }
 }