From 05de839b44700b8999d9be4536927722c7f96f0c Mon Sep 17 00:00:00 2001 From: GeorgFritze Date: Mon, 13 Jun 2022 09:18:22 +0200 Subject: [PATCH] fix bug in pack_float and pack_double --- include/msgpack/v1/pack.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/msgpack/v1/pack.hpp b/include/msgpack/v1/pack.hpp index 46d00e7a..7c1d0f6b 100644 --- a/include/msgpack/v1/pack.hpp +++ b/include/msgpack/v1/pack.hpp @@ -1143,7 +1143,7 @@ inline packer& packer::pack_float(float d) if(d >= 0 && d <= float(std::numeric_limits::max()) && d == float(uint64_t(d))) { pack_imp_uint64(uint64_t(d)); return *this; - } else if(d >= float(std::numeric_limits::min()) && d == float(int64_t(d))) { + } else if(d < 0 && d >= float(std::numeric_limits::min()) && d == float(int64_t(d))) { pack_imp_int64(int64_t(d)); return *this; } @@ -1165,7 +1165,7 @@ inline packer& packer::pack_double(double d) if(d >= 0 && d <= double(std::numeric_limits::max()) && d == double(uint64_t(d))) { pack_imp_uint64(uint64_t(d)); return *this; - } else if(d >= double(std::numeric_limits::min()) && d == double(int64_t(d))) { + } else if(d < 0 && d >= double(std::numeric_limits::min()) && d == double(int64_t(d))) { pack_imp_int64(int64_t(d)); return *this; }