# HG changeset patch # User cehoyos # Date 1269367119 0 # Node ID baece61a55cf88b5ee1b49b2b1fe3d75093c44d9 # Parent e9640e8aeea37814fce55b013dc2500f0e5362c2 Always check if ff_alloc_picture() succeeds. Patch by Pavel Pavlov, pavel summit-tech ca diff -r e9640e8aeea3 -r baece61a55cf mpegvideo_enc.c --- 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; 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 @@ }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]){