diff --git a/src/json.hpp b/src/json.hpp index ad7ab43d..1a542bdf 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -6659,17 +6659,16 @@ class serializer const bool is_negative = std::is_same::value and (x < 0); std::size_t i = 0; - // spare 1 byte for '\0' - while (x != 0 and i < number_buffer.size() - 1) + while (x != 0) { + // spare 1 byte for '\0' + assert(i < number_buffer.size() - 1); + const auto digit = std::labs(static_cast(x % 10)); number_buffer[i++] = static_cast('0' + digit); x /= 10; } - // make sure the number has been processed completely - assert(x == 0); - if (is_negative) { // make sure there is capacity for the '-' @@ -6698,20 +6697,6 @@ class serializer return; } - // special case for 0.0 and -0.0 - if (x == 0) - { - if (std::signbit(x)) - { - o->write_characters("-0.0", 4); - } - else - { - o->write_characters("0.0", 3); - } - return; - } - // get number of digits for a text -> float -> text round-trip static constexpr auto d = std::numeric_limits::digits10;