]> granicus.if.org Git - imagemagick/commitdiff
Eliminate compiler exception
authorCristy <urban-warrior@imagemagick.org>
Thu, 3 Mar 2016 13:49:52 +0000 (08:49 -0500)
committerCristy <urban-warrior@imagemagick.org>
Thu, 3 Mar 2016 13:49:52 +0000 (08:49 -0500)
MagickCore/fx.c

index 2de9be9239f096c27e004aa58fa0d07ec35f3a9f..66dfa7da91c047b7e15778e3d0d363509f8c74a3 100644 (file)
@@ -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