Changeset e1066b6e97b167911e96a618990cbe8ceb516977

Show
Ignore:
Timestamp:
11/10/07 00:04:56 (1 year ago)
Author:
Laurent Aimar <fenrir@videolan.org>
git-committer:
Laurent Aimar <fenrir@videolan.org> 1192053896 +0000
git-parent:

[5c1bbbefaf98811bf723297694f964951915c059]

git-author:
Laurent Aimar <fenrir@videolan.org> 1192053896 +0000
Message:

id3tag: fixed segfault (introduced with demux_meta_t)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • modules/meta_engine/id3tag.c

    r1e9f026 re1066b6  
    6666    int i; 
    6767 
    68     TAB_INIT( p_demux_meta->i_attachments, p_demux_meta->attachments ); 
    69     p_demux_meta->p_meta = NULL; 
    70  
    7168    p_id3_tag = id3_tag_parse( p_data, i_size ); 
    7269    if( !p_id3_tag ) 
    7370        return; 
    7471 
    75     p_demux_meta->p_meta = p_meta = vlc_meta_New(); 
     72    if( !p_demux_meta->p_meta ) 
     73        p_demux_meta->p_meta = vlc_meta_New(); 
     74    p_meta = p_demux_meta->p_meta; 
    7675 
    7776#define ID_IS( a ) (!strcmp(  p_frame->id, a )) 
     
    266265static void ParseAPEvXTag( demux_t *p_demux, uint8_t *p_data, int i_data ) 
    267266{ 
    268     vlc_meta_t *p_meta = (vlc_meta_t *)p_demux->p_private; 
     267    demux_meta_t     *p_demux_meta = (demux_meta_t*)p_demux->p_private; 
     268    vlc_meta_t       *p_meta; 
    269269    vlc_bool_t b_start; 
    270270    vlc_bool_t b_end; 
     
    280280        return; 
    281281 
     282    if( !p_demux_meta->p_meta ) 
     283        p_demux_meta->p_meta = vlc_meta_New(); 
     284    p_meta = p_demux_meta->p_meta; 
     285 
    282286    if( b_start ) 
    283287    { 
     
    297301    if( i_entry <= 0 ) 
    298302        return; 
    299  
    300     if( !p_meta ) 
    301         p_demux->p_private = p_meta = vlc_meta_New(); 
    302303 
    303304    while( i_entry > 0 && i_data >= 10 ) 
     
    482483static int ParseTags( vlc_object_t *p_this ) 
    483484{ 
    484     demux_t *p_demux = (demux_t *)p_this; 
    485     vlc_bool_t b_seekable; 
    486     int64_t i_init; 
     485    demux_t      *p_demux = (demux_t *)p_this; 
     486    demux_meta_t *p_demux_meta = (demux_meta_t*)p_demux->p_private; 
     487    vlc_bool_t    b_seekable; 
     488    int64_t       i_init; 
    487489 
    488490    msg_Dbg( p_demux, "checking for ID3v1/2 and APEv1/2 tags" ); 
    489  
    490491    stream_Control( p_demux->s, STREAM_CAN_FASTSEEK, &b_seekable ); 
    491492    if( !b_seekable ) 
    492         return VLC_SUCCESS
     493        return VLC_EGENERIC
    493494 
    494495    i_init = stream_Tell( p_demux->s ); 
     496 
     497    TAB_INIT( p_demux_meta->i_attachments, p_demux_meta->attachments ); 
     498    p_demux_meta->p_meta = NULL; 
    495499 
    496500    /* */ 
     
    505509     */ 
    506510    stream_Seek( p_demux->s, i_init ); 
     511    if( !p_demux_meta->p_meta && p_demux_meta->i_attachments <= 0 ) 
     512        return VLC_EGENERIC; 
    507513    return VLC_SUCCESS; 
    508514} 
     515 
  • modules/meta_engine/taglib.cpp

    rf06a603 re1066b6  
    232232    demux_t         *p_demux = (demux_t *)p_this; 
    233233    demux_meta_t    *p_demux_meta = (demux_meta_t*)p_demux->p_private; 
    234     vlc_meta_t      *p_meta = p_demux_meta->p_meta
     234    vlc_meta_t      *p_meta
    235235 
    236236    TAB_INIT( p_demux_meta->i_attachments, p_demux_meta->attachments );