libbluray | branch: master | hpi1 <[email protected]> | Tue Sep 4 13:17:24 2012 +0300| [02bea75446c56e7fa4a17098c7344feef2b5708e] | committer: hpi1
Free parsed clpi extension data > http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=02bea75446c56e7fa4a17098c7344feef2b5708e --- src/libbluray/bdnav/clpi_parse.c | 54 ++++++++++++++++++++++++-------------- 1 file changed, 34 insertions(+), 20 deletions(-) diff --git a/src/libbluray/bdnav/clpi_parse.c b/src/libbluray/bdnav/clpi_parse.c index e591af3..60ea00f 100644 --- a/src/libbluray/bdnav/clpi_parse.c +++ b/src/libbluray/bdnav/clpi_parse.c @@ -587,6 +587,35 @@ static int _parse_clpi_extension(BITSTREAM *bits, int id1, int id2, void *handle return 0; } +static void +_clean_program(CLPI_PROG_INFO *p) +{ + int ii; + + for (ii = 0; ii < p->num_prog; ii++) { + if (p->progs[ii].streams != NULL) { + X_FREE(p->progs[ii].streams); + } + } + X_FREE(p->progs); +} + +static void +_clean_cpi(CLPI_CPI *cpi) +{ + int ii; + + for (ii = 0; ii < cpi->num_stream_pid; ii++) { + if (cpi->entry[ii].coarse != NULL) { + X_FREE(cpi->entry[ii].coarse); + } + if (cpi->entry[ii].fine != NULL) { + X_FREE(cpi->entry[ii].fine); + } + } + X_FREE(cpi->entry); +} + void clpi_free(CLPI_CL *cl) { @@ -607,29 +636,14 @@ clpi_free(CLPI_CL *cl) X_FREE(cl->sequence.atc_seq); } - for (ii = 0; ii < cl->program.num_prog; ii++) { - if (cl->program.progs[ii].streams != NULL) { - X_FREE(cl->program.progs[ii].streams); - } - } - if (cl->program.progs != NULL) { - X_FREE(cl->program.progs); - } - - for (ii = 0; ii < cl->cpi.num_stream_pid; ii++) { - if (cl->cpi.entry[ii].coarse != NULL) { - X_FREE(cl->cpi.entry[ii].coarse); - } - if (cl->cpi.entry[ii].fine != NULL) { - X_FREE(cl->cpi.entry[ii].fine); - } - } - if (cl->cpi.entry != NULL) { - X_FREE(cl->cpi.entry); - } + _clean_program(&cl->program); + _clean_cpi(&cl->cpi); X_FREE(cl->extent_start.point); + _clean_program(&cl->program_ss); + _clean_cpi(&cl->cpi_ss); + X_FREE(cl); } _______________________________________________ libbluray-devel mailing list [email protected] http://mailman.videolan.org/listinfo/libbluray-devel
