From e175150f5b3aae9eacc4bcdc01b0e0642a7534f7 Mon Sep 17 00:00:00 2001 From: chenguoping Date: Thu, 14 May 2020 20:54:47 +0800 Subject: [PATCH] fix UBSAN --- include/nlohmann/detail/output/binary_writer.hpp | 3 ++- single_include/nlohmann/json.hpp | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/include/nlohmann/detail/output/binary_writer.hpp b/include/nlohmann/detail/output/binary_writer.hpp index 4b0d141d2..c507134ce 100644 --- a/include/nlohmann/detail/output/binary_writer.hpp +++ b/include/nlohmann/detail/output/binary_writer.hpp @@ -194,7 +194,8 @@ class binary_writer } else { - if (static_cast(static_cast(j.m_value.number_float)) == j.m_value.number_float) + if (j.m_value.number_float < std::numeric_limits::max() and + static_cast(static_cast(j.m_value.number_float)) == j.m_value.number_float) { oa->write_character(get_cbor_float_prefix(static_cast(j.m_value.number_float))); write_number(static_cast(j.m_value.number_float)); diff --git a/single_include/nlohmann/json.hpp b/single_include/nlohmann/json.hpp index 30c353dae..6c339c846 100644 --- a/single_include/nlohmann/json.hpp +++ b/single_include/nlohmann/json.hpp @@ -12143,7 +12143,8 @@ class binary_writer } else { - if (static_cast(static_cast(j.m_value.number_float)) == j.m_value.number_float) + if (j.m_value.number_float < std::numeric_limits::max() and + static_cast(static_cast(j.m_value.number_float)) == j.m_value.number_float) { oa->write_character(get_cbor_float_prefix(static_cast(j.m_value.number_float))); write_number(static_cast(j.m_value.number_float));