]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Added some additional checks for sys.std?? is None, see #1440
authorChristian Heimes <christian@cheimes.de>
Thu, 15 Nov 2007 02:26:46 +0000 (02:26 +0000)
committerChristian Heimes <christian@cheimes.de>
Thu, 15 Nov 2007 02:26:46 +0000 (02:26 +0000)
Modules/_ctypes/callbacks.c
Modules/_cursesmodule.c
Modules/threadmodule.c
Python/bltinmodule.c
Python/errors.c
Python/pythonrun.c
Python/sysmodule.c

index 9f5e5d029adfb1e734872ec3d236a607596d7355..9e1aa4f8cc51adbebc3dfdc015a6646bfd98c745 100644 (file)
@@ -17,7 +17,7 @@ PrintError(char *msg, ...)
        va_start(marker, msg);
        vsnprintf(buf, sizeof(buf), msg, marker);
        va_end(marker);
-       if (f)
+       if (f != NULL && f != Py_None)
                PyFile_WriteString(buf, f);
        PyErr_Print();
 }
index cf412d8777c7aa1e32e5fb48662635ec8c282da1..3a88360b32643554f6c8c9bc362e0f62f4593bba 100644 (file)
@@ -2010,7 +2010,7 @@ PyCurses_setupterm(PyObject* self, PyObject *args, PyObject* keywds)
 
                sys_stdout = PySys_GetObject("stdout");
 
-               if (sys_stdout == NULL) {
+               if (sys_stdout == NULL || sys_stdout == Py_None) {
                        PyErr_SetString(
                                PyCursesError,
                                "lost sys.stdout");
index 62ea6608604d5ca4908261209fdf416450ae70fc..876d5e2af3274dd23682c8306c7ae666feb3679a 100644 (file)
@@ -429,7 +429,7 @@ t_bootstrap(void *boot_raw)
                        PySys_WriteStderr(
                                "Unhandled exception in thread started by ");
                        file = PySys_GetObject("stderr");
-                       if (file)
+                       if (file != NULL && file != Py_None)
                                PyFile_WriteObject(boot->func, file, 0);
                        else
                                PyObject_Print(boot->func, stderr, 0);
index 755bfc1b38983901f77c072d160c8790d9ef8fc1..1b1593e3ceea29df8e548081fb368d366ad5e876 100644 (file)
@@ -1265,17 +1265,17 @@ builtin_input(PyObject *self, PyObject *args)
                return NULL;
 
        /* Check that stdin/out/err are intact */
-       if (fin == NULL) {
+       if (fin == NULL || fin == Py_None) {
                PyErr_SetString(PyExc_RuntimeError,
                                "input(): lost sys.stdin");
                return NULL;
        }
-       if (fout == NULL) {
+       if (fout == NULL || fout == Py_None) {
                PyErr_SetString(PyExc_RuntimeError,
                                "input(): lost sys.stdout");
                return NULL;
        }
-       if (ferr == NULL) {
+       if (ferr == NULL || ferr == Py_None) {
                PyErr_SetString(PyExc_RuntimeError,
                                "input(): lost sys.stderr");
                return NULL;
index b45dad46e6258c155335a6f04453680a6a9f2f0a..1cd5dfdadab4a767d26c02fb209637a508ca556b 100644 (file)
@@ -626,7 +626,7 @@ PyErr_WriteUnraisable(PyObject *obj)
        PyObject *f, *t, *v, *tb;
        PyErr_Fetch(&t, &v, &tb);
        f = PySys_GetObject("stderr");
-       if (f != NULL) {
+       if (f != NULL && f != Py_None) {
                PyFile_WriteString("Exception ", f);
                if (t) {
                        PyObject* moduleName;
index 763f9059bb527d33877d440c42e91280e182b579..86439517ca053b571bc490cc13799fa8564839a0 100644 (file)
@@ -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");
        }
index b77d18417acd2dc2388c89ca1c794c408b075fb9..2fcba5471c245eda7c7794d0e93b6f01803e8926 100644 (file)
@@ -89,7 +89,7 @@ sys_displayhook(PyObject *self, PyObject *o)
        if (PyObject_SetAttrString(builtins, "_", Py_None) != 0)
                return NULL;
        outf = PySys_GetObject("stdout");
-       if (outf == NULL) {
+       if (outf == NULL || outf == Py_None) {
                PyErr_SetString(PyExc_RuntimeError, "lost sys.stdout");
                return NULL;
        }