]> granicus.if.org Git - imagemagick/commitdiff
https://github.com/ImageMagick/ImageMagick/issues/1741
authorCristy <urban-warrior@imagemagick.org>
Fri, 11 Oct 2019 01:02:23 +0000 (21:02 -0400)
committerCristy <urban-warrior@imagemagick.org>
Fri, 11 Oct 2019 01:02:23 +0000 (21:02 -0400)
MagickCore/quantum.h

index ec315a91aaadf0e5c82abdf420f3b81379cc5bf5..be042b4cf1db71dd6a466ae359b9d0183999f574 100644 (file)
@@ -18,6 +18,7 @@
 #ifndef MAGICKCORE_QUANTUM_H
 #define MAGICKCORE_QUANTUM_H
 
+#include <float.h>
 #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);