From 90ca91830853328d0fcb47c2c0ddd9d78da10844 Mon Sep 17 00:00:00 2001 From: ruben Date: Tue, 12 May 2020 10:27:17 +0100 Subject: [PATCH] Fixed overflow bug for DATETIMES In text deserialization, for 32 bit systems --- .../mysql/detail/protocol/impl/text_deserialization.ipp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/include/boost/mysql/detail/protocol/impl/text_deserialization.ipp b/include/boost/mysql/detail/protocol/impl/text_deserialization.ipp index 85cf78d0..5a56780b 100644 --- a/include/boost/mysql/detail/protocol/impl/text_deserialization.ipp +++ b/include/boost/mysql/detail/protocol/impl/text_deserialization.ipp @@ -214,14 +214,13 @@ inline errc deserialize_text_value_datetime( if (is_out_of_range(d)) return errc::protocol_value_error; - // Sum it up - to = datetime( - d + + // Sum it up. Doing time of day independently to prevent overflow + auto time_of_day = std::chrono::hours(hours) + std::chrono::minutes(minutes) + std::chrono::seconds(seconds) + - std::chrono::microseconds(micros) - ); + std::chrono::microseconds(micros); + to = d + time_of_day; return errc::ok; }