Fix handling of code units in compile

This commit is contained in:
Victor Zverovich 2020-07-11 08:35:26 -07:00
parent ba8d98cbb7
commit e1bfb59619
3 changed files with 3 additions and 2 deletions

View File

@ -547,7 +547,7 @@ constexpr auto compile_format_string(S format_str) {
return parse_tail<Args, end, ID>(make_text(str, POS, end - POS), return parse_tail<Args, end, ID>(make_text(str, POS, end - POS),
format_str); format_str);
} else { } else {
return parse_tail<Args, end, ID>(code_unit<char_type>{str[0]}, return parse_tail<Args, end, ID>(code_unit<char_type>{str[POS]},
format_str); format_str);
} }
} }

View File

@ -162,5 +162,6 @@ TEST(CompileTest, FormatTo) {
TEST(CompileTest, TextAndArg) { TEST(CompileTest, TextAndArg) {
EXPECT_EQ(">>>42<<<", fmt::format(FMT_COMPILE(">>>{}<<<"), 42)); EXPECT_EQ(">>>42<<<", fmt::format(FMT_COMPILE(">>>{}<<<"), 42));
EXPECT_EQ("42!", fmt::format(FMT_COMPILE("{}!"), 42));
} }
#endif #endif

View File

@ -81,7 +81,7 @@ TEST(UtilTest, FormatWindowsError) {
EXPECT_EQ(fmt::format("test: {}", utf8_message.str()), EXPECT_EQ(fmt::format("test: {}", utf8_message.str()),
fmt::to_string(actual_message)); fmt::to_string(actual_message));
actual_message.resize(0); actual_message.resize(0);
auto max_size = fmt::detail::max_value<long long>(); auto max_size = fmt::detail::max_value<size_t>() / 2;
fmt::detail::format_windows_error(actual_message, ERROR_FILE_EXISTS, fmt::detail::format_windows_error(actual_message, ERROR_FILE_EXISTS,
fmt::string_view(nullptr, max_size)); fmt::string_view(nullptr, max_size));
EXPECT_EQ(fmt::format("error {}", ERROR_FILE_EXISTS), EXPECT_EQ(fmt::format("error {}", ERROR_FILE_EXISTS),