diff options
author | Erlend E. Aasland <erlend.aasland@protonmail.com> | 2023-02-15 14:07:59 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-15 05:07:59 -0800 |
commit | eb0c485b6c836abb71932537a5058344d11d7bc8 (patch) | |
tree | 6b456f13178753f7af386fb769c5d232e0180fa7 /Python/pylifecycle.c | |
parent | c7766245c14fa03b8afd3aff9be30b13d0069f95 (diff) | |
download | cpython-eb0c485b6c836abb71932537a5058344d11d7bc8.tar.gz cpython-eb0c485b6c836abb71932537a5058344d11d7bc8.zip |
gh-101819: Remove _PyWindowsConsoleIO_Type from the Windows DLL (GH-101904)
Automerge-Triggered-By: GH:erlend-aasland
Diffstat (limited to 'Python/pylifecycle.c')
-rw-r--r-- | Python/pylifecycle.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c index a8a8e7f3d84..045a2996e89 100644 --- a/Python/pylifecycle.c +++ b/Python/pylifecycle.c @@ -54,10 +54,6 @@ extern void _PyIO_Fini(void); #ifdef MS_WINDOWS # undef BYTE - - extern PyTypeObject PyWindowsConsoleIO_Type; -# define PyWindowsConsoleIO_Check(op) \ - (PyObject_TypeCheck((op), &PyWindowsConsoleIO_Type)) #endif #define PUTS(fd, str) _Py_write_noraise(fd, str, (int)strlen(str)) @@ -2358,8 +2354,16 @@ create_stdio(const PyConfig *config, PyObject* io, #ifdef MS_WINDOWS /* Windows console IO is always UTF-8 encoded */ - if (PyWindowsConsoleIO_Check(raw)) + PyTypeObject *winconsoleio_type = (PyTypeObject *)_PyImport_GetModuleAttr( + &_Py_ID(_io), &_Py_ID(_WindowsConsoleIO)); + if (winconsoleio_type == NULL) { + goto error; + } + int is_subclass = PyObject_TypeCheck(raw, winconsoleio_type); + Py_DECREF(winconsoleio_type); + if (is_subclass) { encoding = L"utf-8"; + } #endif text = PyUnicode_FromString(name); |