]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Wed, 1 May 2013 19:00:54 +0000 (19:00 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Wed, 1 May 2013 19:00:54 +0000 (19:00 +0000)
MagickCore/morphology.c

index a1ca0132f2b8e13437a47b5e28ab9e0fd73b4d58..bc7ac7e936ce2d14f29ac6fdbfc0196231f3a4e8 100644 (file)
@@ -2565,12 +2565,12 @@ static ssize_t MorphologyPrimitive(const Image *image,Image *morphology_image,
     i;
 
   ssize_t
-    changes[GetOpenMPMaximumThreads()],
     y;
 
   size_t
-    width,
-    changed;
+    *changes,
+    changed,
+    width;
 
   MagickBooleanType
     status;
@@ -2622,6 +2622,10 @@ static ssize_t MorphologyPrimitive(const Image *image,Image *morphology_image,
     }
   }
   changed=0;
+  changes=(size_t *) AcquireQuantumMemory(GetOpenMPMaximumThreads(),
+    sizeof(*changes));
+  if (changes == (size_t *) NULL)
+    ThrowFatalException(ResourceLimitFatalError,"MemoryAllocationFailed");
   for (i=0; i < (ssize_t) GetOpenMPMaximumThreads(); i++)
     changes[i]=0;
   if ((method == ConvolveMorphology) && (kernel->width == 1))
@@ -2778,6 +2782,7 @@ static ssize_t MorphologyPrimitive(const Image *image,Image *morphology_image,
       image_view=DestroyCacheView(image_view);
       for (i=0; i < (ssize_t) GetOpenMPMaximumThreads(); i++)
         changed+=changes[i];
+      changes=(size_t *) RelinquishMagickMemory(changes);
       return(status ? (ssize_t) changed : 0);
     }
   /*
@@ -3175,6 +3180,7 @@ static ssize_t MorphologyPrimitive(const Image *image,Image *morphology_image,
   image_view=DestroyCacheView(image_view);
   for (i=0; i < (ssize_t) GetOpenMPMaximumThreads(); i++)
     changed+=changes[i];
+  changes=(size_t *) RelinquishMagickMemory(changes);
   return(status ? (ssize_t) changed : -1);
 }