From 77950f05cc5dc7f48a8c8437e17690a89209125d Mon Sep 17 00:00:00 2001 From: =?utf8?q?R=C3=A9mi=20Duraffort?= Date: Fri, 31 Oct 2008 22:10:57 +0100 Subject: [PATCH] Cleanup and fix a potential memleak. --- modules/demux/playlist/xspf.c | 44 +++++++++++++++++------------------ 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/modules/demux/playlist/xspf.c b/modules/demux/playlist/xspf.c index cca6f9ec7a..a9617dd53e 100644 --- a/modules/demux/playlist/xspf.c +++ b/modules/demux/playlist/xspf.c @@ -553,34 +553,32 @@ static bool parse_track_node COMPLEX_INTERFACE } psz_uri = decode_URI_duplicate( psz_value ); - if( psz_uri ) + if( !psz_uri ) { - if( p_demux->p_sys->psz_base && - !strstr( psz_uri, "://" ) ) - { - char* psz_tmp = malloc( - strlen(p_demux->p_sys->psz_base) + - strlen(psz_uri) +1 ); - if( !psz_tmp ) - return false; - sprintf( psz_tmp, "%s%s", - p_demux->p_sys->psz_base, psz_uri ); - free( psz_uri ); - psz_uri = psz_tmp; - } - p_new_input = input_item_NewExt( p_demux, psz_uri, - NULL, 0, NULL, -1 ); - free( psz_uri ); - input_item_CopyOptions( p_input_item, p_new_input ); - psz_uri = NULL; FREE_ATT(); - p_handler = NULL; + return false; } - else + + if( p_demux->p_sys->psz_base && !strstr( psz_uri, "://" ) ) { - FREE_ATT(); - return false; + char* psz_tmp; + if( asprintf( &psz_tmp, "%s%s", p_demux->p_sys->psz_base, + psz_uri ) == -1 ) + { + free( psz_uri ); + FREE_ATT(); + return NULL; + } + free( psz_uri ); + psz_uri = psz_tmp; } + p_new_input = input_item_NewExt( p_demux, psz_uri, + NULL, 0, NULL, -1 ); + free( psz_uri ); + input_item_CopyOptions( p_input_item, p_new_input ); + psz_uri = NULL; + FREE_ATT(); + p_handler = NULL; } else { -- 2.39.2