From: cristy Date: Wed, 28 Sep 2011 00:00:36 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~6943 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=34be065271913f13dac2b7f757f5fd7e1f937210;p=imagemagick --- diff --git a/MagickCore/signature.c b/MagickCore/signature.c index 4859a9e21..cafa5d8e3 100644 --- a/MagickCore/signature.c +++ b/MagickCore/signature.c @@ -504,7 +504,8 @@ MagickExport MagickBooleanType SignatureImage(Image *image, if (image->debug != MagickFalse) (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename); signature_info=AcquireSignatureInfo(); - signature=AcquireStringInfo(sizeof(QuantumAny)); + signature=AcquireStringInfo(image->columns*GetPixelChannels(image)* + sizeof(QuantumAny)); pixels=GetStringInfoDatum(signature); range=GetQuantumRange(image->depth); image_view=AcquireCacheView(image); @@ -513,9 +514,13 @@ MagickExport MagickBooleanType SignatureImage(Image *image, register ssize_t x; + register unsigned char + *q; + p=GetCacheViewVirtualPixels(image_view,0,y,image->columns,1,exception); if (p == (const Quantum *) NULL) break; + q=pixels; for (x=0; x < (ssize_t) image->columns; x++) { register ssize_t @@ -534,11 +539,12 @@ MagickExport MagickBooleanType SignatureImage(Image *image, continue; pixel=ScaleQuantumToAny(p[i],range); for (j=0; j < (ssize_t) sizeof(QuantumAny); j++) - pixels[j]=(unsigned char) ((pixel >> (j*8)) & 0xff); - UpdateSignature(signature_info,signature); + *q++=(unsigned char) ((pixel >> (j*8)) & 0xff); } p+=GetPixelChannels(image); } + SetStringInfoLength(signature,(size_t) (q-pixels)); + UpdateSignature(signature_info,signature); } image_view=DestroyCacheView(image_view); FinalizeSignature(signature_info);