From be548816dc05c7e7a07659d499f1005fc0bc1d55 Mon Sep 17 00:00:00 2001 From: Pavel Pavlov Date: Tue, 23 Mar 2010 17:58:39 +0000 Subject: [PATCH] Always check if ff_alloc_picture() succeeds. Patch by Pavel Pavlov, pavel summit-tech ca Originally committed as revision 22648 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/mpegvideo_enc.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c index aa68becc27..8b28062e9e 100644 --- a/libavcodec/mpegvideo_enc.c +++ b/libavcodec/mpegvideo_enc.c @@ -851,14 +851,18 @@ static int load_input_picture(MpegEncContext *s, AVFrame *pic_arg){ pic->data[i]= pic_arg->data[i]; pic->linesize[i]= pic_arg->linesize[i]; } - ff_alloc_picture(s, (Picture*)pic, 1); + if(ff_alloc_picture(s, (Picture*)pic, 1) < 0){ + return -1; + } }else{ i= ff_find_unused_picture(s, 0); pic= (AVFrame*)&s->picture[i]; pic->reference= 3; - ff_alloc_picture(s, (Picture*)pic, 0); + if(ff_alloc_picture(s, (Picture*)pic, 0) < 0){ + return -1; + } if( pic->data[0] + INPLACE_OFFSET == pic_arg->data[0] && pic->data[1] + INPLACE_OFFSET == pic_arg->data[1] @@ -1048,7 +1052,7 @@ static int estimate_best_b_count(MpegEncContext *s){ return best_b_count; } -static void select_input_picture(MpegEncContext *s){ +static int select_input_picture(MpegEncContext *s){ int i; for(i=1; ipicture[i]; pic->reference = s->reordered_input_picture[0]->reference; - ff_alloc_picture(s, pic, 0); + if(ff_alloc_picture(s, pic, 0) < 0){ + return -1; + } /* mark us unused / free shared pic */ if(s->reordered_input_picture[0]->type == FF_BUFFER_TYPE_INTERNAL) @@ -1214,6 +1220,7 @@ no_output_pic: }else{ memset(&s->new_picture, 0, sizeof(Picture)); } + return 0; } int MPV_encode_picture(AVCodecContext *avctx, @@ -1238,7 +1245,9 @@ int MPV_encode_picture(AVCodecContext *avctx, if(load_input_picture(s, pic_arg) < 0) return -1; - select_input_picture(s); + if(select_input_picture(s) < 0){ + return -1; + } /* output? */ if(s->new_picture.data[0]){