From f7d2cd2228f1e5f85ac6ef0ab7f776dfef22857d Mon Sep 17 00:00:00 2001 From: John Stiles Date: Fri, 11 May 2018 15:16:46 -0700 Subject: [PATCH] added test for parsing 0e100 --- include/rapidjson/internal/diyfp.h | 1 + test/unittest/readertest.cpp | 1 + 2 files changed, 2 insertions(+) diff --git a/include/rapidjson/internal/diyfp.h b/include/rapidjson/internal/diyfp.h index 29abf80..cd941fa 100644 --- a/include/rapidjson/internal/diyfp.h +++ b/include/rapidjson/internal/diyfp.h @@ -99,6 +99,7 @@ struct DiyFp { } DiyFp Normalize() const { + RAPIDJSON_ASSERT(f != 0); // https://stackoverflow.com/a/26809183/291737 #if defined(_MSC_VER) && defined(_M_AMD64) unsigned long index; _BitScanReverse64(&index, f); diff --git a/test/unittest/readertest.cpp b/test/unittest/readertest.cpp index e530801..c487ff9 100644 --- a/test/unittest/readertest.cpp +++ b/test/unittest/readertest.cpp @@ -207,6 +207,7 @@ static void TestParseDouble() { TEST_DOUBLE(fullPrecision, "0.0", 0.0); TEST_DOUBLE(fullPrecision, "-0.0", -0.0); // For checking issue #289 + TEST_DOUBLE(fullPrecision, "0e100", 0.0); // Normalize() must not invoke __builtin_clzll(0) TEST_DOUBLE(fullPrecision, "1.0", 1.0); TEST_DOUBLE(fullPrecision, "-1.0", -1.0); TEST_DOUBLE(fullPrecision, "1.5", 1.5);