From 7b058696133c6d36e0b48a454e357482db71982e Mon Sep 17 00:00:00 2001 From: Cristy Date: Fri, 11 Oct 2019 20:20:19 -0400 Subject: [PATCH] https://github.com/ImageMagick/ImageMagick/issues/1740 --- MagickCore/quantize.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/MagickCore/quantize.c b/MagickCore/quantize.c index d65cb2d7e2f..38ea0d3e755 100644 --- a/MagickCore/quantize.c +++ b/MagickCore/quantize.c @@ -2347,8 +2347,8 @@ MagickExport MagickBooleanType PosterizeImage(Image *image,const size_t levels, const DitherMethod dither_method,ExceptionInfo *exception) { #define PosterizeImageTag "Posterize/Image" -#define PosterizePixel(pixel) (Quantum) (QuantumRange*(MagickRound( \ - QuantumScale*pixel*(levels-1)))/MagickMax((ssize_t) levels-1,1)) +#define PosterizePixel(pixel) ClampToQuantum((MagickRealType) QuantumRange*( \ + MagickRound(QuantumScale*pixel*(levels-1)))/MagickMax((ssize_t) levels-1,1)) CacheView *image_view; @@ -3282,17 +3282,21 @@ extern "C" { static int IntensityCompare(const void *x,const void *y) { + double + intensity; + PixelInfo *color_1, *color_2; - ssize_t - intensity; - color_1=(PixelInfo *) x; color_2=(PixelInfo *) y; - intensity=(ssize_t) (GetPixelInfoIntensity((const Image *) NULL,color_1)- - GetPixelInfoIntensity((const Image *) NULL,color_2)); + intensity=GetPixelInfoIntensity((const Image *) NULL,color_1)- + GetPixelInfoIntensity((const Image *) NULL,color_2); + if (intensity > (double) INT_MAX) + intensity=(double) INT_MAX; + if (intensity < (double) INT_MIN) + intensity=(double) INT_MIN; return((int) intensity); }