Mercurial > libavcodec.hg
changeset 11534:baece61a55cf libavcodec
Always check if ff_alloc_picture() succeeds.
Patch by Pavel Pavlov, pavel summit-tech ca
author | cehoyos |
---|---|
date | Tue, 23 Mar 2010 17:58:39 +0000 |
parents | e9640e8aeea3 |
children | f468aac92300 |
files | mpegvideo_enc.c |
diffstat | 1 files changed, 14 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/mpegvideo_enc.c Tue Mar 23 17:55:08 2010 +0000 +++ b/mpegvideo_enc.c Tue Mar 23 17:58:39 2010 +0000 @@ -851,14 +851,18 @@ 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 @@ return best_b_count; } -static void select_input_picture(MpegEncContext *s){ +static int select_input_picture(MpegEncContext *s){ int i; for(i=1; i<MAX_PICTURE_COUNT; i++) @@ -1184,7 +1188,9 @@ Picture *pic= &s->picture[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 @@ }else{ memset(&s->new_picture, 0, sizeof(Picture)); } + return 0; } int MPV_encode_picture(AVCodecContext *avctx, @@ -1238,7 +1245,9 @@ 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]){