[vlc-devel] [PATCH 1/1] [transcode] Fix allocation of picture_t without full initialization

David Flynn davidf+nntp at woaf.net
Tue Nov 4 18:43:03 CET 2008


From: David Flynn <davidf at rd.bbc.co.uk>

Signed-off-by: David Flynn <davidf at rd.bbc.co.uk>
---
 modules/stream_out/transcode.c |   25 +++++++------------------
 1 files changed, 7 insertions(+), 18 deletions(-)

diff --git a/modules/stream_out/transcode.c b/modules/stream_out/transcode.c
index c2040ff..a706085 100644
--- a/modules/stream_out/transcode.c
+++ b/modules/stream_out/transcode.c
@@ -2224,31 +2224,20 @@ static picture_t *video_new_buffer( vlc_object_t *p_this, picture_t **pp_ring,
         i = 0;
     }
 
-    p_pic = malloc( sizeof(picture_t) );
+    p_pic = picture_New( p_dec->fmt_out.video.i_chroma,
+                         p_dec->fmt_out.video.i_width,
+                         p_dec->fmt_out.video.i_height,
+                         p_dec->fmt_out.video.i_aspect );
     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_height,
-                          p_dec->fmt_out.video.i_aspect );
-
-    if( !p_pic->i_planes )
-    {
-        free( p_pic );
-        return NULL;
-    }
-
-    p_pic->pf_release = video_release_buffer;
-    p_pic->p_sys = malloc( sizeof(picture_sys_t) );
+    p_pic->p_sys = calloc( 1, sizeof(picture_sys_t) );
     if( !p_pic->p_sys )
     {
-        free( p_pic );
+        p_pic->pf_release( p_pic );
         return NULL;
     }
+    p_pic->pf_release = video_release_buffer;
 
-    p_pic->p_sys->p_owner = p_this;
-    p_pic->i_status = RESERVED_PICTURE;
 
     pp_ring[i] = p_pic;
     return p_pic;
-- 
1.5.6.5





More information about the vlc-devel mailing list