From cd7202e0399677942a5428a7db9dec1d3c8b5c45 Mon Sep 17 00:00:00 2001 From: Vladislav Shchapov Date: Mon, 17 Oct 2022 02:04:55 +0500 Subject: [PATCH] Fix overflow error (#3143) Signed-off-by: Vladislav Shchapov Signed-off-by: Vladislav Shchapov --- include/fmt/chrono.h | 2 +- test/chrono-test.cc | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/include/fmt/chrono.h b/include/fmt/chrono.h index 1ed94ace..46a93fde 100644 --- a/include/fmt/chrono.h +++ b/include/fmt/chrono.h @@ -1838,7 +1838,7 @@ struct chrono_formatter { } else { write(second(), 2); write_fractional_seconds( - out, std::chrono::duration(val)); + out, std::chrono::duration(val)); } return; } diff --git a/test/chrono-test.cc b/test/chrono-test.cc index fbc9fd61..d53ad56b 100644 --- a/test/chrono-test.cc +++ b/test/chrono-test.cc @@ -642,6 +642,15 @@ TEST(chrono_test, cpp20_duration_subsecond_support) { std::chrono::duration>(1)), "00.142857"); + EXPECT_EQ(fmt::format("{:%S}", + std::chrono::duration>(0x80)), + "-01.28"); + + EXPECT_EQ( + fmt::format("{:%M:%S}", + std::chrono::duration>(0x8000)), + "-05:27.68"); + // Check that floating point seconds with ratio<1,1> are printed. EXPECT_EQ(fmt::format("{:%S}", std::chrono::duration{1.5}), "01.500000");