From: cristy Date: Thu, 1 Jan 2015 17:46:31 +0000 (+0000) Subject: Calling SetImageExtent() in a PICT loop is inefficient. X-Git-Tag: 7.0.1-0~1509 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d6d3b0d9471405f7d42f9e51aa19e21ebfd59dcc;p=imagemagick Calling SetImageExtent() in a PICT loop is inefficient. --- diff --git a/coders/pict.c b/coders/pict.c index 38417d129..dafac52f4 100644 --- a/coders/pict.c +++ b/coders/pict.c @@ -901,6 +901,15 @@ static Image *ReadPICTImage(const ImageInfo *image_info, image->resolution.x=DefaultResolution; image->resolution.y=DefaultResolution; image->units=UndefinedResolution; + if ((image_info->ping != MagickFalse) && (image_info->number_scenes != 0)) + if (image->scene >= (image_info->scene+image_info->number_scenes-1)) + { + (void) CloseBlob(image); + return(GetFirstImageInList(image)); + } + status=SetImageExtent(image,image->columns,image->rows,exception); + if (status == MagickFalse) + return(DestroyImageList(image)); /* Interpret PICT opcodes. */ @@ -910,9 +919,6 @@ static Image *ReadPICTImage(const ImageInfo *image_info, if ((image_info->ping != MagickFalse) && (image_info->number_scenes != 0)) if (image->scene >= (image_info->scene+image_info->number_scenes-1)) break; - status=SetImageExtent(image,image->columns,image->rows,exception); - if (status == MagickFalse) - return(DestroyImageList(image)); if ((version == 1) || ((TellBlob(image) % 2) != 0)) code=ReadBlobByte(image); if (version == 2)