Use PyUnicode_EncodeCodePage() instead of PyUnicode_EncodeMBCS() with
PyUnicode_AsUnicodeAndSize()
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index b0b9528..90a4fcb 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -3051,13 +3051,7 @@
PyUnicode_EncodeFSDefault(PyObject *unicode)
{
#ifdef HAVE_MBCS
- const Py_UNICODE *wstr;
- Py_ssize_t wlen;
-
- wstr = PyUnicode_AsUnicodeAndSize(unicode, &wlen);
- if (wstr == NULL)
- return NULL;
- return PyUnicode_EncodeMBCS(wstr, wlen, NULL);
+ return PyUnicode_EncodeCodePage(CP_ACP, unicode, NULL);
#elif defined(__APPLE__)
return _PyUnicode_AsUTF8String(unicode, "surrogateescape");
#else
@@ -3141,15 +3135,8 @@
(strcmp(lower, "iso-8859-1") == 0))
return _PyUnicode_AsLatin1String(unicode, errors);
#ifdef HAVE_MBCS
- else if (strcmp(lower, "mbcs") == 0) {
- const Py_UNICODE *wstr;
- Py_ssize_t wlen;
-
- wstr = PyUnicode_AsUnicodeAndSize(unicode, &wlen);
- if (wstr == NULL)
- return NULL;
- return PyUnicode_EncodeMBCS(wstr, wlen, errors);
- }
+ else if (strcmp(lower, "mbcs") == 0)
+ return PyUnicode_EncodeCodePage(CP_ACP, unicode, errors);
#endif
else if (strcmp(lower, "ascii") == 0)
return _PyUnicode_AsASCIIString(unicode, errors);