On 05/27/2012 09:25 PM, John Stebbins wrote: > It is not necessary to test *any* pointer for null before calling free. It is > safe to call free on a null pointer.
of course, you're right
>From 8f5317941fb147712b024665096afb793a01a283 Mon Sep 17 00:00:00 2001 From: Ferdinand Holzer <[email protected]> Date: Sun, 27 May 2012 21:42:51 +0200 Subject: [PATCH] Fixed memory leak in mpls parsing audio_ref's weren't freed in _clean_stn. bd handle wasn't closed in list_titles example. --- src/examples/list_titles.c | 1 + src/libbluray/bdnav/mpls_parse.c | 8 ++++++++ 2 files changed, 9 insertions(+), 0 deletions(-) diff --git a/src/examples/list_titles.c b/src/examples/list_titles.c index a987951..14679f7 100644 --- a/src/examples/list_titles.c +++ b/src/examples/list_titles.c @@ -96,5 +96,6 @@ int main(int argc, char *argv[]) ); bd_free_title_info(ti); } + bd_close(bd); return 0; } diff --git a/src/libbluray/bdnav/mpls_parse.c b/src/libbluray/bdnav/mpls_parse.c index 5c83532..29032e5 100644 --- a/src/libbluray/bdnav/mpls_parse.c +++ b/src/libbluray/bdnav/mpls_parse.c @@ -401,6 +401,14 @@ _parse_stn(BITSTREAM *bits, MPLS_STN *stn) static void _clean_stn(MPLS_STN *stn) { + if(stn->secondary_audio) { + X_FREE(stn->secondary_audio->sa_primary_audio_ref); + } + if(stn->secondary_video) { + X_FREE(stn->secondary_video->sv_secondary_audio_ref); + X_FREE(stn->secondary_video->sv_pip_pg_ref); + } + X_FREE(stn->video); X_FREE(stn->audio); X_FREE(stn->pg); -- 1.7.7
_______________________________________________ libbluray-devel mailing list [email protected] http://mailman.videolan.org/listinfo/libbluray-devel
