From a03ff6d3cde5184746bbf9d6f5355402628cbbd7 Mon Sep 17 00:00:00 2001 From: Antoine Pitrou Date: Sun, 8 Aug 2010 21:37:51 +0000 Subject: [PATCH] sys.stderr and sys.excepthook can be None at interpreter shutdown, in which case display the appropriate error message. (part of #5319) --- Python/pythonrun.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Python/pythonrun.c b/Python/pythonrun.c index db5d0a7a189..7f63ae108cd 100644 --- a/Python/pythonrun.c +++ b/Python/pythonrun.c @@ -1149,7 +1149,7 @@ PyErr_PrintEx(int set_sys_last_vars) PySys_SetObject("last_traceback", tb); } hook = PySys_GetObject("excepthook"); - if (hook) { + if (hook && hook != Py_None) { PyObject *args = PyTuple_Pack(3, exception, v, tb ? tb : Py_None); PyObject *result = PyEval_CallObject(hook, args); @@ -1199,7 +1199,7 @@ PyErr_Display(PyObject *exception, PyObject *value, PyObject *tb) int err = 0; PyObject *f = PySys_GetObject("stderr"); Py_INCREF(value); - if (f == NULL) + if (f == NULL || f == Py_None) fprintf(stderr, "lost sys.stderr\n"); else { if (Py_FlushLine())