From: Cristy Date: Sun, 18 Mar 2018 12:30:05 +0000 (-0400) Subject: Optimize ResetImagePixels() X-Git-Tag: 7.0.7-27~2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=aae6f6ae66dab7075549e817a53cc86b6b3415d3;p=imagemagick Optimize ResetImagePixels() --- diff --git a/MagickCore/cache-private.h b/MagickCore/cache-private.h index e7d66c79d..9891543f0 100644 --- a/MagickCore/cache-private.h +++ b/MagickCore/cache-private.h @@ -245,7 +245,6 @@ extern MagickPrivate const Quantum *GetVirtualPixelsNexus(const Cache,NexusInfo *magick_restrict); extern MagickPrivate const void - *AcquirePixelCachePixels(const Image *,MagickSizeType *,ExceptionInfo *), *GetVirtualMetacontentFromNexus(const Cache,NexusInfo *magick_restrict); extern MagickPrivate MagickBooleanType diff --git a/MagickCore/cache.c b/MagickCore/cache.c index 928607e54..cc1d5a6b5 100644 --- a/MagickCore/cache.c +++ b/MagickCore/cache.c @@ -279,7 +279,7 @@ MagickPrivate NexusInfo **AcquirePixelCacheNexus(const size_t number_threads) % % % % % % -+ A c q u i r e P i x e l C a c h e P i x e l s % +% A c q u i r e P i x e l C a c h e P i x e l s % % % % % % % @@ -290,8 +290,8 @@ MagickPrivate NexusInfo **AcquirePixelCacheNexus(const size_t number_threads) % % The format of the AcquirePixelCachePixels() method is: % -% const void *AcquirePixelCachePixels(const Image *image, -% MagickSizeType *length,ExceptionInfo *exception) +% void *AcquirePixelCachePixels(const Image *image,size_t *length, +% ExceptionInfo *exception) % % A description of each parameter follows: % @@ -302,8 +302,8 @@ MagickPrivate NexusInfo **AcquirePixelCacheNexus(const size_t number_threads) % o exception: return any errors or warnings in this structure. % */ -MagickPrivate const void *AcquirePixelCachePixels(const Image *image, - MagickSizeType *length,ExceptionInfo *exception) +MagickExport void *AcquirePixelCachePixels(const Image *image,size_t *length, + ExceptionInfo *exception) { CacheInfo *magick_restrict cache_info; @@ -317,9 +317,9 @@ MagickPrivate const void *AcquirePixelCachePixels(const Image *image, assert(cache_info->signature == MagickCoreSignature); *length=0; if ((cache_info->type != MemoryCache) && (cache_info->type != MapCache)) - return((const void *) NULL); - *length=cache_info->length; - return((const void *) cache_info->pixels); + return((void *) NULL); + *length=(size_t) cache_info->length; + return(cache_info->pixels); } /* diff --git a/MagickCore/cache.h b/MagickCore/cache.h index e73ea857f..ccb918aa4 100644 --- a/MagickCore/cache.h +++ b/MagickCore/cache.h @@ -70,6 +70,7 @@ extern MagickExport Quantum const size_t,ExceptionInfo *) magick_hot_spot; extern MagickExport void + *AcquirePixelCachePixels(const Image *,size_t *,ExceptionInfo *), *GetAuthenticMetacontent(const Image *), *GetPixelCachePixels(Image *,MagickSizeType *,ExceptionInfo *); diff --git a/MagickCore/image.c b/MagickCore/image.c index 1f4e6eaed..563042bf1 100644 --- a/MagickCore/image.c +++ b/MagickCore/image.c @@ -2230,13 +2230,25 @@ MagickExport MagickBooleanType ResetImagePixels(Image *image, MagickBooleanType status; + size_t + length; + ssize_t y; + void + *pixels; + assert(image != (Image *) NULL); if (image->debug != MagickFalse) (void) LogMagickEvent(TraceEvent,GetMagickModule(),"..."); assert(image->signature == MagickCoreSignature); + pixels=AcquirePixelCachePixels(image,&length,exception); + if (pixels != (void *) NULL) + { + (void) memset(pixels,0,length); + return(MagickTrue); + } /* Reset image pixels. */ diff --git a/coders/miff.c b/coders/miff.c index 5cabbfe55..827945267 100644 --- a/coders/miff.c +++ b/coders/miff.c @@ -1271,7 +1271,9 @@ static Image *ReadMIFFImage(const ImageInfo *image_info, status=SetImageExtent(image,image->columns,image->rows,exception); if (status == MagickFalse) return(DestroyImageList(image)); - (void) ResetImagePixels(image,exception); + status=ResetImagePixels(image,exception); + if (status == MagickFalse) + return(DestroyImageList(image)); /* Allocate image pixels. */