From c2f66e7fc9189a652f77a021bd047c4146d634d1 Mon Sep 17 00:00:00 2001 From: Cristy Date: Thu, 10 Oct 2019 21:03:00 -0400 Subject: [PATCH] https://github.com/ImageMagick/ImageMagick/issues/1741 --- magick/quantum.h | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/magick/quantum.h b/magick/quantum.h index 821680de0..6c05c212a 100644 --- a/magick/quantum.h +++ b/magick/quantum.h @@ -18,6 +18,7 @@ #ifndef MAGICKCORE_QUANTUM_H #define MAGICKCORE_QUANTUM_H +#include #include "magick/image.h" #include "magick/semaphore.h" @@ -87,6 +88,10 @@ typedef struct _QuantumInfo static inline Quantum ClampToQuantum(const MagickRealType value) { #if defined(MAGICKCORE_HDRI_SUPPORT) + if (value < FLT_MIN) + return((Quantum) FLT_MIN); + if (value > FLT_MAX) + return((Quantum) FLT_MAX); return((Quantum) value); #else if (value <= 0.0f) @@ -103,7 +108,7 @@ static inline unsigned char ScaleQuantumToChar(const Quantum quantum) #if !defined(MAGICKCORE_HDRI_SUPPORT) return((unsigned char) quantum); #else - if (quantum <= 0.0) + if ((IsNaN(quantum) != MagickFalse) || (quantum <= 0.0)) return(0); if (quantum >= 255.0) return(255); @@ -116,7 +121,7 @@ static inline unsigned char ScaleQuantumToChar(const Quantum quantum) #if !defined(MAGICKCORE_HDRI_SUPPORT) return((unsigned char) (((quantum+128UL)-((quantum+128UL) >> 8)) >> 8)); #else - if (quantum <= 0.0) + if ((IsNaN(quantum) != MagickFalse) || (quantum <= 0.0)) return(0); if ((quantum/257.0) >= 255.0) return(255); @@ -130,7 +135,7 @@ static inline unsigned char ScaleQuantumToChar(const Quantum quantum) return((unsigned char) ((quantum+MagickULLConstant(8421504))/ MagickULLConstant(16843009))); #else - if (quantum <= 0.0) + if ((IsNaN(quantum) != MagickFalse) || (quantum <= 0.0)) return(0); if ((quantum/16843009.0) >= 255.0) return(255); @@ -143,7 +148,7 @@ static inline unsigned char ScaleQuantumToChar(const Quantum quantum) #if !defined(MAGICKCORE_HDRI_SUPPORT) return((unsigned char) (quantum/72340172838076673.0+0.5)); #else - if (quantum <= 0.0) + if ((IsNaN(quantum) != MagickFalse) || (quantum <= 0.0)) return(0); if ((quantum/72340172838076673.0) >= 255.0) return(255);