]> granicus.if.org Git - imagemagick/blobdiff - magick/quantum.c
(no commit message)
[imagemagick] / magick / quantum.c
index 970a38d1f2a8f8cf30ccead83cc71c07e5075885..3b8754b5a3f2168794caab15504021d372675ea9 100644 (file)
@@ -120,7 +120,7 @@ MagickExport QuantumInfo *AcquireQuantumInfo(const ImageInfo *image_info,
   QuantumInfo
     *quantum_info;
 
-  quantum_info=(QuantumInfo *) AcquireQuantumMemory(1,sizeof(*quantum_info));
+  quantum_info=(QuantumInfo *) AcquireMagickMemory(sizeof(*quantum_info));
   if (quantum_info == (QuantumInfo *) NULL)
     ThrowFatalException(ResourceLimitFatalError,"MemoryAllocationFailed");
   quantum_info->signature=MagickSignature;
@@ -173,7 +173,7 @@ static MagickBooleanType AcquireQuantumPixels(QuantumInfo *quantum_info,
     return(MagickFalse);
   quantum_info->extent=extent;
   (void) ResetMagickMemory(quantum_info->pixels,0,
-    sizeof(*quantum_info->pixels));
+    quantum_info->number_threads*sizeof(*quantum_info->pixels));
   for (i=0; i < (ssize_t) quantum_info->number_threads; i++)
   {
     quantum_info->pixels[i]=(unsigned char *) AcquireQuantumMemory(extent+1,
@@ -250,18 +250,23 @@ static void DestroyQuantumPixels(QuantumInfo *quantum_info)
   register ssize_t
     i;
 
+  ssize_t
+    extent;
+
   assert(quantum_info != (QuantumInfo *) NULL);
   assert(quantum_info->signature == MagickSignature);
   assert(quantum_info->pixels != (unsigned char **) NULL);
+  extent=(ssize_t) quantum_info->extent;
   for (i=0; i < (ssize_t) quantum_info->number_threads; i++)
-  {
-    /*
-      Did we overrun our quantum buffer?
-    */
-    assert(quantum_info->pixels[i][quantum_info->extent] == QuantumSignature);
-    quantum_info->pixels[i]=(unsigned char *) RelinquishMagickMemory(
-      quantum_info->pixels[i]);
-  }
+    if (quantum_info->pixels[i] != (unsigned char *) NULL)
+      {
+        /*
+          Did we overrun our quantum buffer?
+        */
+        assert(quantum_info->pixels[i][extent] == QuantumSignature);
+        quantum_info->pixels[i]=(unsigned char *) RelinquishMagickMemory(
+          quantum_info->pixels[i]);
+      }
   quantum_info->pixels=(unsigned char **) RelinquishMagickMemory(
     quantum_info->pixels);
 }
@@ -363,7 +368,7 @@ MagickExport void GetQuantumInfo(const ImageInfo *image_info,
     return;
   option=GetImageOption(image_info,"quantum:format");
   if (option != (char *) NULL)
-    quantum_info->format=(QuantumFormatType) ParseMagickOption(
+    quantum_info->format=(QuantumFormatType) ParseCommandOption(
       MagickQuantumFormatOptions,MagickFalse,option);
   option=GetImageOption(image_info,"quantum:minimum");
   if (option != (char *) NULL)