From 545c1845969c4b4427d40a79c25222d4fc2cd0da Mon Sep 17 00:00:00 2001 From: Daniel Lemire Date: Wed, 26 Apr 2023 16:53:44 -0400 Subject: [PATCH] Stack!!! --- tests/basictest.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/tests/basictest.cpp b/tests/basictest.cpp index 09fa077..3d7f753 100644 --- a/tests/basictest.cpp +++ b/tests/basictest.cpp @@ -702,32 +702,33 @@ constexpr void check_basic_test_result(stringtype str, #undef FASTFLOAT_CHECK_EQ } -// We give plenty of memory: 2048 characters. -const size_t global_string_capacity = 2048; -std::u16string u16(global_string_capacity, '\0'); -std::u32string u32(global_string_capacity, '\0'); template constexpr void basic_test(std::string_view str, T expected, std::errc expected_ec = std::errc()) { T actual; auto result = fast_float::from_chars(str.data(), str.data() + str.size(), actual); check_basic_test_result(str, result, actual, expected, expected_ec); + constexpr size_t global_string_capacity = 2048; + if(str.size() > global_string_capacity) { return; } + // We give plenty of memory: 2048 characters. + char16_t u16[global_string_capacity]{}; for (size_t i = 0; i < str.size(); i++) { u16[i] = char16_t(str[i]); } - auto result16 = fast_float::from_chars(u16.data(), u16.data() + str.size(), actual); - check_basic_test_result(std::u16string_view(u16.data(), str.size()), result16, actual, expected, expected_ec); + auto result16 = fast_float::from_chars(u16, u16 + str.size(), actual); + check_basic_test_result(std::u16string_view(u16, str.size()), result16, actual, expected, expected_ec); + char32_t u32[global_string_capacity]{}; for (size_t i = 0; i < str.size(); i++) { u32[i] = char32_t(str[i]); } - auto result32 = fast_float::from_chars(u32.data(), u32.data() + str.size(), actual); - check_basic_test_result(std::u32string_view(u32.data(), str.size()), result32, actual, expected, expected_ec); + auto result32 = fast_float::from_chars(u32, u32 + str.size(), actual); + check_basic_test_result(std::u32string_view(u32, str.size()), result32, actual, expected, expected_ec); } template