From 9f6fd40982ae95e878d42cd8a79cc2460ae85e81 Mon Sep 17 00:00:00 2001 From: Kit Chan Date: Sun, 14 Jan 2024 00:18:59 -0800 Subject: [PATCH 1/2] Update test_TextView.cc --- unit_tests/test_TextView.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/unit_tests/test_TextView.cc b/unit_tests/test_TextView.cc index ebeb6c2..a310a58 100644 --- a/unit_tests/test_TextView.cc +++ b/unit_tests/test_TextView.cc @@ -459,6 +459,7 @@ TEST_CASE("TextView Conversions", "[libswoc][TextView]") { TextView n6 = "0X13f8"; TextView n7 = "-2345679"; TextView n8 = "+2345679"; + TextView n9 = "-9223372036854775808"; TextView x; n2.ltrim_if(&isspace); @@ -482,6 +483,7 @@ TEST_CASE("TextView Conversions", "[libswoc][TextView]") { REQUIRE(2345679 == svtoi(n8, &x)); REQUIRE(x == n8); REQUIRE(0b10111 == svtoi("0b10111"_tv)); + REQUIRE(-9223372036854775808 == svtoi(n9)); x = n4; REQUIRE(13 == swoc::svto_radix<10>(x)); From 224e7dc47770ae8c0d9b37d315ac8771c5f5b9c8 Mon Sep 17 00:00:00 2001 From: Kit Chan Date: Sun, 14 Jan 2024 00:19:57 -0800 Subject: [PATCH 2/2] Update TextView.cc --- code/src/TextView.cc | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/code/src/TextView.cc b/code/src/TextView.cc index fbfb343..5e6cd74 100644 --- a/code/src/TextView.cc +++ b/code/src/TextView.cc @@ -63,7 +63,12 @@ svtoi(TextView src, TextView *out, int base) { out->assign(start, parsed.data_end()); } if (neg) { - zret = -intmax_t(std::min(n, ABS_MIN)); + uintmax_t temp = std::min(n, ABS_MIN); + if (temp == ABS_MIN) { + zret = std::numeric_limits::min(); + } else { + zret = -intmax_t(temp); + } } else { zret = std::min(n, ABS_MAX); }