diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2025-04-13-17-18-01.gh-issue-124476.fvGfQ7.rst b/Misc/NEWS.d/next/Core_and_Builtins/2025-04-13-17-18-01.gh-issue-124476.fvGfQ7.rst new file mode 100644 index 00000000000000..be0ecee95ded39 --- /dev/null +++ b/Misc/NEWS.d/next/Core_and_Builtins/2025-04-13-17-18-01.gh-issue-124476.fvGfQ7.rst @@ -0,0 +1 @@ +Fix decoding from the locale encoding in the C.UTF-8 locale. diff --git a/Python/fileutils.c b/Python/fileutils.c index 95b64ed76fb974..78603d40704f14 100644 --- a/Python/fileutils.c +++ b/Python/fileutils.c @@ -528,15 +528,7 @@ decode_current_locale(const char* arg, wchar_t **wstr, size_t *wlen, break; } - if (converted == INCOMPLETE_CHARACTER) { - /* Incomplete character. This should never happen, - since we provide everything that we have - - unless there is a bug in the C library, or I - misunderstood how mbrtowc works. */ - goto decode_error; - } - - if (converted == DECODE_ERROR) { + if (converted == DECODE_ERROR || converted == INCOMPLETE_CHARACTER) { if (!surrogateescape) { goto decode_error; }