# HG changeset patch # User reimar # Date 1352149118 0 # Node ID 4ca7b3dfb574d2f8554d3f0d66f0c7611e9e39f6 # Parent c93bf3f1540b63cc4923e69cf25a786e282cee87 Fix crash when not able to find a mpi by using an early return. diff -r c93bf3f1540b -r 4ca7b3dfb574 libmpcodecs/vf.c --- a/libmpcodecs/vf.c Mon Nov 05 20:53:49 2012 +0000 +++ b/libmpcodecs/vf.c Mon Nov 05 20:58:38 2012 +0000 @@ -279,6 +279,7 @@ mp_image_t* mpi=NULL; int w2; int number = (mp_imgtype >> 16) - 1; + int missing_palette; #ifdef MP_DEBUG assert(w == -1 || w >= vf->w); @@ -344,8 +345,10 @@ mpi->number = number; break; } - if(mpi){ - int missing_palette = !(mpi->flags & MP_IMGFLAG_RGB_PALETTE) && (mp_imgflag & MP_IMGFLAG_RGB_PALETTE); + + if (!mpi) + return NULL; + mpi->type=mp_imgtype; mpi->w=vf->w; mpi->h=vf->h; // keep buffer allocation status & color flags only: @@ -354,6 +357,7 @@ // accept restrictions, draw_slice and palette flags only: mpi->flags|=mp_imgflag&(MP_IMGFLAGMASK_RESTRICTIONS|MP_IMGFLAG_DRAW_CALLBACK|MP_IMGFLAG_RGB_PALETTE); if(!vf->draw_slice) mpi->flags&=~MP_IMGFLAG_DRAW_CALLBACK; + missing_palette = !(mpi->flags & MP_IMGFLAG_RGB_PALETTE) && (mp_imgflag & MP_IMGFLAG_RGB_PALETTE); if(mpi->width!=w2 || mpi->height!=h || missing_palette){ // printf("vf.c: MPI parameters changed! %dx%d -> %dx%d \n", mpi->width,mpi->height,w2,h); if(mpi->flags&MP_IMGFLAG_ALLOCATED){ @@ -429,7 +433,6 @@ } mpi->qscale = NULL; - } mpi->usage_count++; // TODO: figure out what is going on with EXPORT types if (mpi->usage_count > 1 && mpi->type != MP_IMGTYPE_EXPORT)