vlc | branch: master | Rémi Duraffort <ivo...@videolan.org> | Mon Nov 25 19:20:11 2013 +0100| [7e94e20bb5ee9a1014fa08f51c04f2293f21ea7a] | committer: Rémi Duraffort
asx: fix many memory leaks (and cid #1109641) > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=7e94e20bb5ee9a1014fa08f51c04f2293f21ea7a --- modules/demux/playlist/asx.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/modules/demux/playlist/asx.c b/modules/demux/playlist/asx.c index 49d0a40..1898cdd 100644 --- a/modules/demux/playlist/asx.c +++ b/modules/demux/playlist/asx.c @@ -312,6 +312,8 @@ static int Demux( demux_t *p_demux ) char *psz_entryref = NULL; xml_reader_t *p_xml_reader = NULL; + input_item_t *p_current_input = GetCurrentItem( p_demux ); + input_item_node_t *p_subitems = NULL; bool b_first_node = false; int i_type; @@ -324,8 +326,7 @@ static int Demux( demux_t *p_demux ) goto error; } - input_item_t *p_current_input = GetCurrentItem( p_demux ); - input_item_node_t *p_subitems = input_item_node_Create( p_current_input ); + p_subitems = input_item_node_Create( p_current_input ); do { @@ -424,17 +425,22 @@ static int Demux( demux_t *p_demux ) } while( i_type != XML_READER_ENDELEM || strncasecmp( psz_node, "ASX", 3 ) ); + input_item_node_PostAndDelete( p_subitems ); + p_subitems = NULL; + + +error: free( psz_base ); free( psz_title_asx ); free( psz_entryref ); free( psz_txt ); - input_item_node_PostAndDelete( p_subitems ); - vlc_gc_decref( p_current_input ); - -error: if( p_xml_reader) xml_ReaderDelete( p_xml_reader ); + if( p_subitems ) + input_item_node_Delete( p_subitems ); + + vlc_gc_decref( p_current_input ); return 0; } _______________________________________________ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits