libdvbv5: don't use realloc() inside pat.c
authorMauro Carvalho Chehab <m.chehab@samsung.com>
Thu, 28 Nov 2013 11:34:15 +0000 (09:34 -0200)
committerMauro Carvalho Chehab <m.chehab@samsung.com>
Thu, 28 Nov 2013 11:41:34 +0000 (09:41 -0200)
commitaa05eb2cb86860ad9847174e8f46c586ce9c40d8
treedd64a1e8a2eb2e74fa6e77e984bf1011eb0190ff
parente78b298ffba9edf1cfad2688d0dba31c3815109b
libdvbv5: don't use realloc() inside pat.c

The usage of realloc() inside pat is wrong, as the newly reallocated
data could have a different address, and this is not returned back
to dvb-scan's dvb_read_section_with_id().

While we could do some other tricks to pass the new pointer back,
the entire logic is really not good. Also, the PAT handler uses a
different model than the other tables.

So, change it to use a linked list for the programs. This can, however,
break the API for other applications using it.

Fortunately, the dvb_pat_program_foreach() macro abstracts this
API difference, so, the breakage will not actually happen, if the
other apps use this macro (with is the case of tvdaemon).

Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
lib/include/descriptors/pat.h
lib/libdvbv5/descriptors.c
lib/libdvbv5/descriptors/nit.c
lib/libdvbv5/descriptors/pat.c
lib/libdvbv5/dvb-scan.c