[vlc-commits] asx: fix many memory leaks (and cid #1109641)
Rémi Duraffort
git at videolan.org
Mon Nov 25 19:22:50 CET 2013
vlc | branch: master | Rémi Duraffort <ivoire at 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;
}
More information about the vlc-commits
mailing list