From: Cristy Date: Tue, 7 Jun 2016 23:29:34 +0000 (-0400) Subject: ... X-Git-Tag: 7.0.2-0~6 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=54c9393fbde385630de310aeed1461732a773951;p=imagemagick ... --- diff --git a/MagickCore/effect.c b/MagickCore/effect.c index 924c47eed..2062cfd18 100644 --- a/MagickCore/effect.c +++ b/MagickCore/effect.c @@ -1686,6 +1686,9 @@ MagickExport Image *LocalContrastImage(const Image *image,const double radius, Image *contrast_image; + MagickBooleanType + status; + MemoryInfo *scanLinePixels_info, *interImage_info; @@ -1747,6 +1750,7 @@ MagickExport Image *LocalContrastImage(const Image *image,const double radius, /* Vertical pass. */ + status=MagickTrue; { ssize_t x; @@ -1774,11 +1778,18 @@ MagickExport Image *LocalContrastImage(const Image *image,const double radius, ssize_t i; + if (status == MagickFalse) + continue; pixels=scanLinePixels; pixels+=id*scanLineSize; pix=pixels; p=GetCacheViewVirtualPixels(image_view,x,-width,1,image->rows+(2*width), exception); + if (p == (const Quantum *) NULL) + { + status=MagickFalse; + continue; + } for (y=0; y < (ssize_t) image->rows+(2*width); y++) { *pix++=(float)GetPixelLuma(image,p); @@ -1848,12 +1859,18 @@ MagickExport Image *LocalContrastImage(const Image *image,const double radius, ssize_t i; + if (status == MagickFalse) + continue; pixels=scanLinePixels; pixels+=id*scanLineSize; - p=GetCacheViewVirtualPixels(image_view,0,y,image->columns,1, - exception); + p=GetCacheViewVirtualPixels(image_view,0,y,image->columns,1,exception); q=GetCacheViewAuthenticPixels(contrast_view,0,y,image->columns,1, exception); + if ((p == (const Quantum *) NULL) || (q == (Quantum *) NULL)) + { + status=MagickFalse; + continue; + } memcpy(pixels,interImage+(y*(image->columns+(2*width))),(image->columns+ (2*width))*sizeof(float)); for (x=0; x < (ssize_t) image->columns; x++) @@ -1890,12 +1907,16 @@ MagickExport Image *LocalContrastImage(const Image *image,const double radius, p+=image->number_channels; q+=contrast_image->number_channels; } + if (SyncCacheViewAuthenticPixels(contrast_view,exception) == MagickFalse) + status=MagickFalse; } } scanLinePixels_info=RelinquishVirtualMemory(scanLinePixels_info); interImage_info=RelinquishVirtualMemory(interImage_info); contrast_view=DestroyCacheView(contrast_view); image_view=DestroyCacheView(image_view); + if (status == MagickFalse) + contrast_image=DestroyImage(contrast_image); return(contrast_image); } @@ -3476,7 +3497,7 @@ MagickExport Image *ShadeImage(const Image *image,const MagickBooleanType gray, GetPixelIntensity(linear_image,pre-GetPixelChannels(linear_image))- GetPixelIntensity(linear_image,pre)- GetPixelIntensity(linear_image,pre+GetPixelChannels(linear_image))); - if ((fabs(normal.x) <= MagickEpsilon) && + if ((fabs(normal.x) <= MagickEpsilon) && (fabs(normal.y) <= MagickEpsilon)) shade=light.z; else