diff options
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 a8a8e7f3d8..045a2996e8 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); | 
