{
input_item_t *p_new_input = p_demux->p_sys->pp_tracklist[i];
if( p_new_input )
- {
input_ItemAddSubItem( p_current_input, p_new_input, VLC_FALSE );
- }
vlc_gc_decref( p_new_input );
}
if( !strcmp( psz_name, psz_element ) )
{
FREE_ATT();
- if( p_demux->p_sys->i_identifier <
+ if( p_demux->p_sys->i_identifier == -1 ||
+ p_demux->p_sys->i_identifier ==
p_demux->p_sys->i_tracklist_entries )
- {
- p_demux->p_sys->pp_tracklist[
- p_demux->p_sys->i_identifier ] = p_new_input;
- }
- else
{
if( p_demux->p_sys->i_identifier >
p_demux->p_sys->i_tracklist_entries )
p_demux->p_sys->i_tracklist_entries,
p_demux->p_sys->i_tracklist_entries,
p_new_input );
+ p_demux->p_sys->i_identifier = -1;
+ }
+ else
+ {
+ msg_Err( p_demux, "Invalid identifier %d", p_demux->p_sys->i_identifier );
+ p_demux->p_sys->i_identifier = -1;
+ return VLC_FALSE;
}
return VLC_TRUE;
}
return VLC_FALSE;
}
}
- else if( !strcmp( p_handler->name, "identifier" ) )
+ else if( !strcmp( p_handler->name, "identifier" ) &&
+ *psz_value >= '0' && *psz_value <= '9' )
{
p_demux->p_sys->i_identifier = atoi( psz_value );
}