From: Laurent Aimar Date: Mon, 4 Aug 2008 22:31:33 +0000 (+0200) Subject: Handle libass track creation errors. X-Git-Tag: 0.9.0~518^2~11 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=9c537633ba83abf6db6d5b83dc59d447d90cb4dd;p=vlc Handle libass track creation errors. --- diff --git a/modules/codec/libass.c b/modules/codec/libass.c index 90a0dc5d28..1771ad4aae 100644 --- a/modules/codec/libass.c +++ b/modules/codec/libass.c @@ -140,11 +140,15 @@ static int Create( vlc_object_t *p_this ) return VLC_ENOMEM; /* */ + p_sys->p_ass = AssHandleYield( p_dec ); + if( !p_sys->p_ass ) + { + free( p_sys ); + return VLC_EGENERIC; + } vlc_mutex_init( &p_sys->lock ); p_sys->i_refcount = 1; - p_sys->p_ass = AssHandleYield( p_dec ); - /* load attachments */ input_attachment_t **pp_attachments; int i_attachments; @@ -173,6 +177,12 @@ static int Create( vlc_object_t *p_this ) /* Add a track */ vlc_mutex_lock( p_sys->p_ass->p_lock ); p_sys->p_track = p_track = ass_new_track( p_sys->p_ass->p_library ); + if( !p_track ) + { + vlc_mutex_unlock( p_sys->p_ass->p_lock ); + DecSysRelease( p_sys ); + return VLC_EGENERIC; + } ass_process_codec_private( p_track, p_dec->fmt_in.p_extra, p_dec->fmt_in.i_extra ); vlc_mutex_unlock( p_sys->p_ass->p_lock ); @@ -209,7 +219,8 @@ static void DecSysRelease( decoder_sys_t *p_sys ) vlc_mutex_destroy( &p_sys->lock ); vlc_mutex_lock( p_sys->p_ass->p_lock ); - ass_free_track( p_sys->p_track ); + if( p_sys->p_track ) + ass_free_track( p_sys->p_track ); vlc_mutex_unlock( p_sys->p_ass->p_lock ); AssHandleRelease( p_sys->p_ass );