From: Cristy Date: Thu, 3 Mar 2016 13:49:52 +0000 (-0500) Subject: Eliminate compiler exception X-Git-Tag: 7.0.1-0~181 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=91730603830b928d82afc4806c4d6f74effe1633;p=imagemagick Eliminate compiler exception --- diff --git a/MagickCore/fx.c b/MagickCore/fx.c index 2de9be923..66dfa7da9 100644 --- a/MagickCore/fx.c +++ b/MagickCore/fx.c @@ -5765,12 +5765,12 @@ MagickExport Image *WaveImage(const Image *image,const double amplitude, */ static inline void HatTransform(const float *magick_restrict pixels, - const size_t stride,const size_t size,const size_t scale,float *kernel) + const size_t stride,const size_t extent,const size_t scale,float *kernel) { const float - *restrict p, - *restrict q, - *restrict r; + *magick_restrict p, + *magick_restrict q, + *magick_restrict r; register ssize_t i; @@ -5780,21 +5780,21 @@ static inline void HatTransform(const float *magick_restrict pixels, r=pixels+scale*stride; for (i=0; i < (ssize_t) scale; i++) { - kernel[i]=0.25f*(*p+*p+*q+*r); + kernel[i]=0.25f*(*p+(*p)+(*q)+(*r)); p+=stride; q-=stride; r+=stride; } - for ( ; i < (ssize_t) (size-scale); i++) + for ( ; i < (ssize_t) (extent-scale); i++) { - kernel[i]=0.25f*(2.0f**p+*(p-scale*stride)+*(p+scale*stride)); + kernel[i]=0.25f*(2.0f*(*p)+*(p-scale*stride)+*(p+scale*stride)); p+=stride; } q=p-scale*stride; - r=pixels+stride*(size-2); - for ( ; i < (ssize_t) size; i++) + r=pixels+stride*(extent-2); + for ( ; i < (ssize_t) extent; i++) { - kernel[i]=0.25f*(*p+*p+*q+*r); + kernel[i]=0.25f*(*p+(*p)+(*q)+(*r)); p+=stride; q+=stride; r-=stride; @@ -5828,8 +5828,8 @@ MagickExport Image *WaveletDenoiseImage(const Image *image, channel; static const float - noise_levels[]= { - 0.8002f, 0.2735f, 0.1202f, 0.0585f, 0.0291f, 0.0152f, 0.0080f, 0.0044f }; + noise_levels[] = { 0.8002f, 0.2735f, 0.1202f, 0.0585f, 0.0291f, 0.0152f, + 0.0080f, 0.0044f }; /* Initialize noise image attributes. @@ -5868,7 +5868,7 @@ MagickExport Image *WaveletDenoiseImage(const Image *image, } pixels=(float *) GetVirtualMemoryBlob(pixels_info); status=MagickTrue; - number_pixels=image->columns*image->rows; + number_pixels=(MagickSizeType) image->columns*image->rows; image_view=AcquireAuthenticCacheView(image,exception); noise_view=AcquireAuthenticCacheView(noise_image,exception); for (channel=0; channel < (ssize_t) GetPixelChannels(image); channel++) @@ -5928,7 +5928,7 @@ MagickExport Image *WaveletDenoiseImage(const Image *image, x, y; - low_pass=(size_t) (((level & 1)+1)*number_pixels); + low_pass=(size_t) (number_pixels*((level & 0x01)+1)); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,1) \ magick_threads(image,image,image->rows,1) @@ -5938,13 +5938,19 @@ MagickExport Image *WaveletDenoiseImage(const Image *image, const int id = GetOpenMPThreadId(); + register float + *magick_restrict p, + *magick_restrict q; + register ssize_t x; - HatTransform(pixels+y*image->columns+high_pass,1,image->columns, - (size_t) (1 << level),kernel+id*image->columns); + p=kernel+id*image->columns; + q=pixels+y*image->columns; + HatTransform(q+high_pass,1,image->columns,(size_t) (1 << level),p); + q+=low_pass; for (x=0; x < (ssize_t) image->columns; x++) - pixels[y*image->columns+x+low_pass]=kernel[id*image->columns+x]; + *q++=(*p++); } #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,1) \ @@ -5955,13 +5961,21 @@ MagickExport Image *WaveletDenoiseImage(const Image *image, const int id = GetOpenMPThreadId(); + register float + *magick_restrict p, + *magick_restrict q; + register ssize_t y; - HatTransform(pixels+x+low_pass,image->columns,image->rows,(size_t) - (1 << level),kernel+id*image->rows); + p=kernel+id*image->rows; + q=pixels+x+low_pass; + HatTransform(q,image->columns,image->rows,(size_t) (1 << level),p); for (y=0; y < (ssize_t) image->rows; y++) - pixels[y*image->columns+x+low_pass]=kernel[id*image->rows+y]; + { + *q=(*p++); + q+=image->columns; + } } /* To threshold, each coefficient is compared to a threshold value and