summaryrefslogtreecommitdiffstats
path: root/Python/pythonrun.c
diff options
context:
space:
mode:
authorChristian Heimes <christian@cheimes.de>2007-11-15 02:26:46 (GMT)
committerChristian Heimes <christian@cheimes.de>2007-11-15 02:26:46 (GMT)
commit2be03734f89fa0a5de0a2426790be2d16440fb68 (patch)
tree7d41e63de62d8ebbc41a7d3b46604fe84f65aff6 /Python/pythonrun.c
parent70021d716456ffcca9caba707a735e845e18dd6e (diff)
downloadcpython-2be03734f89fa0a5de0a2426790be2d16440fb68.zip
cpython-2be03734f89fa0a5de0a2426790be2d16440fb68.tar.gz
cpython-2be03734f89fa0a5de0a2426790be2d16440fb68.tar.bz2
Added some additional checks for sys.std?? is None, see #1440
Diffstat (limited to 'Python/pythonrun.c')
-rw-r--r--Python/pythonrun.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/Python/pythonrun.c b/Python/pythonrun.c
index 763f905..8643951 100644
--- a/Python/pythonrun.c
+++ b/Python/pythonrun.c
@@ -335,7 +335,7 @@ flush_std_files(void)
PyObject *ferr = PySys_GetObject("stderr");
PyObject *tmp;
- if (fout != NULL) {
+ if (fout != NULL && fout != Py_None) {
tmp = PyObject_CallMethod(fout, "flush", "");
if (tmp == NULL)
PyErr_Clear();
@@ -343,7 +343,7 @@ flush_std_files(void)
Py_DECREF(tmp);
}
- if (ferr != NULL) {
+ if (ferr != NULL || ferr != Py_None) {
tmp = PyObject_CallMethod(ferr, "flush", "");
if (tmp == NULL)
PyErr_Clear();
@@ -693,6 +693,8 @@ initsite(void)
m = PyImport_ImportModule("site");
if (m == NULL) {
f = PySys_GetObject("stderr");
+ if (f == NULL || f == Py_None)
+ return;
if (Py_VerboseFlag) {
PyFile_WriteString(
"'import site' failed; traceback:\n", f);
@@ -900,7 +902,7 @@ PyRun_InteractiveOneFlags(FILE *fp, const char *filename, PyCompilerFlags *flags
if (fp == stdin) {
/* Fetch encoding from sys.stdin */
v = PySys_GetObject("stdin");
- if (!v)
+ if (v == NULL || v == Py_None)
return -1;
oenc = PyObject_GetAttrString(v, "encoding");
if (!oenc)
@@ -1293,7 +1295,10 @@ PyErr_Display(PyObject *exception, PyObject *value, PyObject *tb)
int err = 0;
PyObject *f = PySys_GetObject("stderr");
Py_INCREF(value);
- if (f == NULL) {
+ if (f == Py_None) {
+ /* pass */
+ }
+ else if (f == NULL) {
_PyObject_Dump(value);
fprintf(stderr, "lost sys.stderr\n");
}