From: Cristy Date: Fri, 11 Oct 2019 01:02:23 +0000 (-0400) Subject: https://github.com/ImageMagick/ImageMagick/issues/1741 X-Git-Tag: 7.0.9-0~92 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=564f2a35e523e2b6cce9485018157f03ec05a947;p=imagemagick https://github.com/ImageMagick/ImageMagick/issues/1741 --- diff --git a/MagickCore/quantum.h b/MagickCore/quantum.h index ec315a91a..be042b4cf 100644 --- a/MagickCore/quantum.h +++ b/MagickCore/quantum.h @@ -18,6 +18,7 @@ #ifndef MAGICKCORE_QUANTUM_H #define MAGICKCORE_QUANTUM_H +#include #include "MagickCore/image.h" #include "MagickCore/semaphore.h" @@ -84,6 +85,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) @@ -100,7 +105,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); @@ -113,7 +118,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); @@ -127,7 +132,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); @@ -140,7 +145,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);