]> granicus.if.org Git - imagemagick/commitdiff
Added missing check for destination transparency.
authordirk <dirk@git.imagemagick.org>
Sat, 21 Nov 2015 11:35:35 +0000 (12:35 +0100)
committerdirk <dirk@git.imagemagick.org>
Sat, 21 Nov 2015 11:35:35 +0000 (12:35 +0100)
MagickCore/pixel.c

index 3fb41084846e1a845f3cec18e53b1f8a1cf1f2a7..91e62942a02d6e7252d629c4019b169e799e13a7 100644 (file)
@@ -6042,7 +6042,8 @@ MagickExport MagickBooleanType IsFuzzyEquivalencePixel(const Image *source,
   fuzz=GetFuzzyColorDistance(source,destination);
   scale=1.0;
   distance=0.0;
-  if (source->alpha_trait != UndefinedPixelTrait)
+  if (source->alpha_trait != UndefinedPixelTrait ||
+      destination->alpha_trait != UndefinedPixelTrait)
     {
       /*
         Transparencies are involved - set alpha distance
@@ -6055,8 +6056,10 @@ MagickExport MagickBooleanType IsFuzzyEquivalencePixel(const Image *source,
         Generate a alpha scaling factor to generate a 4D cone on colorspace
         Note that if one color is transparent, distance has no color component.
       */
-      scale=QuantumScale*GetPixelAlpha(source,p);
-      scale*=QuantumScale*GetPixelAlpha(destination,q);
+      if (source->alpha_trait != UndefinedPixelTrait)
+        scale=QuantumScale*GetPixelAlpha(source,p);
+      if (destination->alpha_trait != UndefinedPixelTrait)
+        scale*=QuantumScale*GetPixelAlpha(destination,q);
       if (scale <= MagickEpsilon)
         return(MagickTrue);
     }