From a3ecff9504f73ab8083d7da989c5f27ecf70d98c Mon Sep 17 00:00:00 2001 From: Hermet Park Date: Wed, 13 Oct 2021 20:15:44 +0900 Subject: [PATCH] svg_loader util: fix the floating constant truncated to zero issue. fyi, the minimum value of the float is 1.175494351 E-38 @Issue: https://github.com/Samsung/thorvg/issues/899 --- src/loaders/svg/tvgSvgUtil.cpp | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/src/loaders/svg/tvgSvgUtil.cpp b/src/loaders/svg/tvgSvgUtil.cpp index efa8d84d..d5b9cdcf 100644 --- a/src/loaders/svg/tvgSvgUtil.cpp +++ b/src/loaders/svg/tvgSvgUtil.cpp @@ -22,8 +22,6 @@ #include #include -#include -#include #include "tvgSvgUtil.h" /************************************************************************/ @@ -32,7 +30,7 @@ static inline bool _floatExact(float a, float b) { - return memcmp(&a, &b, sizeof (float)) == 0; + return memcmp(&a, &b, sizeof(float)) == 0; } static uint8_t _hexCharToDec(const char c) @@ -178,15 +176,10 @@ float svgUtilStrtof(const char *nPtr, char **endPtr) goto success; } - if ((_floatExact(val, 2.2250738585072011f)) && ((minus_e * static_cast(exponentPart)) == -308)) { - val *= 1.0e-308f; - a = iter; - errno = ERANGE; - goto success; - } - - if ((_floatExact(val, 2.2250738585072012f)) && ((minus_e * static_cast(exponentPart)) <= -308)) { - val *= 1.0e-308f; + //if ((_floatExact(val, 2.2250738585072011f)) && ((minus_e * static_cast(exponentPart)) <= -308)) { + if ((_floatExact(val, 1.175494351f)) && ((minus_e * static_cast(exponentPart)) <= -38)) { + //val *= 1.0e-308f; + val *= 1.0e-38f; a = iter; goto success; }