diff options
Diffstat (limited to 'Python')
-rw-r--r-- | Python/pythonrun.c | 9 | ||||
-rw-r--r-- | Python/sysmodule.c | 6 | ||||
-rw-r--r-- | Python/traceback.c | 2 |
3 files changed, 10 insertions, 7 deletions
diff --git a/Python/pythonrun.c b/Python/pythonrun.c index ad6c44f2da..3aa1295f9e 100644 --- a/Python/pythonrun.c +++ b/Python/pythonrun.c @@ -273,7 +273,8 @@ Py_InitializeEx(int install_sigs) sys_isatty = PyObject_CallMethod(sys_stream, "isatty", ""); if (!sys_isatty) PyErr_Clear(); - if(sys_isatty && PyObject_IsTrue(sys_isatty)) { + if(sys_isatty && PyObject_IsTrue(sys_isatty) && + PyFile_Check(sys_stream)) { if (!PyFile_SetEncoding(sys_stream, codeset)) Py_FatalError("Cannot set codeset of stdin"); } @@ -283,7 +284,8 @@ Py_InitializeEx(int install_sigs) sys_isatty = PyObject_CallMethod(sys_stream, "isatty", ""); if (!sys_isatty) PyErr_Clear(); - if(sys_isatty && PyObject_IsTrue(sys_isatty)) { + if(sys_isatty && PyObject_IsTrue(sys_isatty) && + PyFile_Check(sys_stream)) { if (!PyFile_SetEncoding(sys_stream, codeset)) Py_FatalError("Cannot set codeset of stdout"); } @@ -293,7 +295,8 @@ Py_InitializeEx(int install_sigs) sys_isatty = PyObject_CallMethod(sys_stream, "isatty", ""); if (!sys_isatty) PyErr_Clear(); - if(sys_isatty && PyObject_IsTrue(sys_isatty)) { + if(sys_isatty && PyObject_IsTrue(sys_isatty) && + PyFile_Check(sys_stream)) { if (!PyFile_SetEncoding(sys_stream, codeset)) Py_FatalError("Cannot set codeset of stderr"); } diff --git a/Python/sysmodule.c b/Python/sysmodule.c index 101a6e46e8..f17fd05e1e 100644 --- a/Python/sysmodule.c +++ b/Python/sysmodule.c @@ -1110,17 +1110,17 @@ _PySys_Init(void) if (PyErr_Occurred()) return NULL; #ifdef MS_WINDOWS - if(isatty(_fileno(stdin))){ + if(isatty(_fileno(stdin)) && PyFile_Check(sysin)) { sprintf(buf, "cp%d", GetConsoleCP()); if (!PyFile_SetEncoding(sysin, buf)) return NULL; } - if(isatty(_fileno(stdout))) { + if(isatty(_fileno(stdout)) && PyFile_Check(sysout)) { sprintf(buf, "cp%d", GetConsoleOutputCP()); if (!PyFile_SetEncoding(sysout, buf)) return NULL; } - if(isatty(_fileno(stderr))) { + if(isatty(_fileno(stderr)) && PyFile_Check(syserr)) { sprintf(buf, "cp%d", GetConsoleOutputCP()); if (!PyFile_SetEncoding(syserr, buf)) return NULL; diff --git a/Python/traceback.c b/Python/traceback.c index 04078b952c..4496c9ff57 100644 --- a/Python/traceback.c +++ b/Python/traceback.c @@ -113,7 +113,7 @@ newtracebackobject(PyTracebackObject *next, PyFrameObject *frame) int PyTraceBack_Here(PyFrameObject *frame) { - PyThreadState *tstate = frame->f_tstate; + PyThreadState *tstate = PyThreadState_GET(); PyTracebackObject *oldtb = (PyTracebackObject *) tstate->curexc_traceback; PyTracebackObject *tb = newtracebackobject(oldtb, frame); if (tb == NULL) |