Commit fc22aeac authored by David Flynn's avatar David Flynn Committed by Laurent Aimar

Fix allocation of picture_t without full initialization

NB, this highlights some reference counting strangeness.
Signed-off-by: default avatarDavid Flynn <davidf@rd.bbc.co.uk>
Signed-off-by: default avatarLaurent Aimar <fenrir@videolan.org>
parent 3efe5e8a
...@@ -2224,31 +2224,20 @@ static picture_t *video_new_buffer( vlc_object_t *p_this, picture_t **pp_ring, ...@@ -2224,31 +2224,20 @@ static picture_t *video_new_buffer( vlc_object_t *p_this, picture_t **pp_ring,
i = 0; i = 0;
} }
p_pic = malloc( sizeof(picture_t) ); p_pic = picture_New( p_dec->fmt_out.video.i_chroma,
if( !p_pic ) return NULL;
p_dec->fmt_out.video.i_chroma = p_dec->fmt_out.i_codec;
vout_AllocatePicture( VLC_OBJECT(p_dec), p_pic,
p_dec->fmt_out.video.i_chroma,
p_dec->fmt_out.video.i_width, p_dec->fmt_out.video.i_width,
p_dec->fmt_out.video.i_height, p_dec->fmt_out.video.i_height,
p_dec->fmt_out.video.i_aspect ); p_dec->fmt_out.video.i_aspect );
if( !p_pic ) return NULL;
if( !p_pic->i_planes ) p_dec->fmt_out.video.i_chroma = p_dec->fmt_out.i_codec;
{ p_pic->p_sys = calloc( 1, sizeof(picture_sys_t) );
free( p_pic );
return NULL;
}
p_pic->pf_release = video_release_buffer;
p_pic->p_sys = malloc( sizeof(picture_sys_t) );
if( !p_pic->p_sys ) if( !p_pic->p_sys )
{ {
free( p_pic ); picture_Release( p_pic );
return NULL; return NULL;
} }
p_pic->pf_release = video_release_buffer;
p_pic->p_sys->p_owner = p_this; p_pic->i_refcount = 0;
p_pic->i_status = RESERVED_PICTURE;
pp_ring[i] = p_pic; pp_ring[i] = p_pic;
return p_pic; return p_pic;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment