[vlc-devel] commit: Don't wait location-node for creating input, and allow multiple ( Ilkka Ollakka )
git version control
git at videolan.org
Sun Jan 11 17:34:40 CET 2009
vlc | branch: 0.9-bugfix | Ilkka Ollakka <ileoo at videolan.org> | Wed Dec 17 23:07:22 2008 +0200| [343c86e8d2522b5c3b482fee76ea16be7c34b3ed] | committer: Ilkka Ollakka
Don't wait location-node for creating input, and allow multiple
location nodes on track.
Use last location-node for uri (maybe first would be better instead ?).
check that input_item_NewExt doesn't return NULL
should fix ticket #2353
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=343c86e8d2522b5c3b482fee76ea16be7c34b3ed
---
modules/demux/playlist/xspf.c | 29 ++++++++++++++++++-----------
1 files changed, 18 insertions(+), 11 deletions(-)
diff --git a/modules/demux/playlist/xspf.c b/modules/demux/playlist/xspf.c
index 852ce1a..3516295 100644
--- a/modules/demux/playlist/xspf.c
+++ b/modules/demux/playlist/xspf.c
@@ -394,7 +394,6 @@ static bool parse_tracklist_node COMPLEX_INTERFACE
*/
static bool parse_track_node COMPLEX_INTERFACE
{
- input_item_t *p_new_input = NULL;
int i_node;
char *psz_name = NULL;
char *psz_value = NULL;
@@ -417,6 +416,14 @@ static bool parse_track_node COMPLEX_INTERFACE
{NULL, UNKNOWN_CONTENT, {NULL} }
};
+ input_item_t *p_new_input = input_item_NewExt( p_demux, NULL, NULL, 0, NULL, -1 );
+
+ if( !p_new_input )
+ {
+ /* malloc has failed for input_item_NewExt, so bailout early */
+ return false;
+ }
+
/* reset i_track_id */
p_demux->p_sys->i_track_id = -1;
@@ -503,11 +510,13 @@ static bool parse_track_node COMPLEX_INTERFACE
if( p_demux->p_sys->i_track_id < 0 )
{
- if( p_new_input )
+ char *psz_uri = input_item_GetURI( p_new_input );
+ if( psz_uri && *psz_uri)
{
input_item_AddSubItem( p_input_item, p_new_input );
- vlc_gc_decref( p_new_input );
}
+ vlc_gc_decref( p_new_input );
+ free( psz_uri );
return true;
}
@@ -543,14 +552,6 @@ static bool parse_track_node COMPLEX_INTERFACE
if( !strcmp( p_handler->name, "location" ) )
{
char *psz_uri = NULL;
- /* there MUST NOT be an item */
- if( p_new_input )
- {
- msg_Err( p_demux, "item <%s> already created",
- psz_name );
- FREE_ATT();
- return false;
- }
psz_uri = decode_URI_duplicate( psz_value );
if( psz_uri )
@@ -581,6 +582,12 @@ static bool parse_track_node COMPLEX_INTERFACE
FREE_ATT();
return false;
}
+ input_item_SetURI( p_new_input, psz_uri );
+ free( psz_uri );
+ input_item_CopyOptions( p_input_item, p_new_input );
+ psz_uri = NULL;
+ FREE_ATT();
+ p_handler = NULL;
}
else
{
More information about the vlc-devel
mailing list