]> granicus.if.org Git - imagemagick/commitdiff
...
authorCristy <urban-warrior@imagemagick.org>
Mon, 14 Oct 2019 23:54:35 +0000 (19:54 -0400)
committerCristy <urban-warrior@imagemagick.org>
Mon, 14 Oct 2019 23:54:35 +0000 (19:54 -0400)
MagickCore/quantize.c

index e26fd01a3925b2d6031def7a7558cc3d56edd9b9..d2b5cca07685396d0cef44126bcba81369ea0b52 100644 (file)
@@ -3277,6 +3277,15 @@ MagickExport MagickBooleanType RemapImages(const QuantizeInfo *quantize_info,
 extern "C" {
 #endif
 
+static inline double ConstrainPixelIntensity(double x)
+{
+  if (x < (double) -(SSIZE_MAX-512))
+    return((double) -(SSIZE_MAX-512));
+  if (x > (double) (SSIZE_MAX-512))
+    return((double) (SSIZE_MAX-512));
+  return(x);
+}
+
 static int IntensityCompare(const void *x,const void *y)
 {
   PixelInfo
@@ -3288,8 +3297,9 @@ static int IntensityCompare(const void *x,const void *y)
 
   color_1=(PixelInfo *) x;
   color_2=(PixelInfo *) y;
-  intensity=(ssize_t) GetPixelInfoIntensity((const Image *) NULL,color_1)-
-    (ssize_t) GetPixelInfoIntensity((const Image *) NULL,color_2);
+  intensity=(ssize_t) ConstrainPixelIntensity(GetPixelInfoIntensity(
+    (const Image *) NULL,color_1))-(ssize_t) ConstrainPixelIntensity(
+    GetPixelInfoIntensity((const Image *) NULL,color_2));
   return((int) intensity);
 }