mirror of
https://github.com/fmtlib/fmt.git
synced 2024-11-05 02:27:45 +00:00
Fix formatting of paths containing invalid Unicode
This commit is contained in:
parent
dde8cf3bb7
commit
1e0ce567ef
@ -2027,16 +2027,14 @@ auto write_escaped_cp(OutputIt out, const find_escape_result<Char>& escape)
|
||||
*out++ = static_cast<Char>('\\');
|
||||
break;
|
||||
default:
|
||||
if (is_utf8()) {
|
||||
if (escape.cp < 0x100) {
|
||||
return write_codepoint<2, Char>(out, 'x', escape.cp);
|
||||
}
|
||||
if (escape.cp < 0x10000) {
|
||||
return write_codepoint<4, Char>(out, 'u', escape.cp);
|
||||
}
|
||||
if (escape.cp < 0x110000) {
|
||||
return write_codepoint<8, Char>(out, 'U', escape.cp);
|
||||
}
|
||||
if (escape.cp < 0x100) {
|
||||
return write_codepoint<2, Char>(out, 'x', escape.cp);
|
||||
}
|
||||
if (escape.cp < 0x10000) {
|
||||
return write_codepoint<4, Char>(out, 'u', escape.cp);
|
||||
}
|
||||
if (escape.cp < 0x110000) {
|
||||
return write_codepoint<8, Char>(out, 'U', escape.cp);
|
||||
}
|
||||
for (Char escape_char : basic_string_view<Char>(
|
||||
escape.begin, to_unsigned(escape.end - escape.begin))) {
|
||||
|
@ -30,8 +30,7 @@ TEST(std_test, path) {
|
||||
L"\x0428\x0447\x0443\x0447\x044B\x043D\x0448"
|
||||
L"\x0447\x044B\x043D\x0430")),
|
||||
"\"Шчучыншчына\"");
|
||||
// EXPECT_EQ(fmt::format("{}", std::filesystem::path(L"\xd800")),
|
||||
// "\\x{d800}");
|
||||
EXPECT_EQ(fmt::format("{}", std::filesystem::path(L"\xd800")), "\"\\ud800\"");
|
||||
# endif
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user