Fix the handling of errors in Py_FlushLine() in a few places.
(Basically, the error is cleared... Like almost everywhere else...)
diff --git a/Python/pythonrun.c b/Python/pythonrun.c
index 4cd0e3f..83a0bc1 100644
--- a/Python/pythonrun.c
+++ b/Python/pythonrun.c
@@ -676,7 +676,8 @@
return;
if (PyErr_GivenExceptionMatches(exception, PyExc_SystemExit)) {
- err = Py_FlushLine();
+ if (Py_FlushLine())
+ PyErr_Clear();
fflush(stdout);
if (v == NULL || v == Py_None)
Py_Exit(0);
@@ -714,10 +715,10 @@
if (f == NULL)
fprintf(stderr, "lost sys.stderr\n");
else {
- err = Py_FlushLine();
+ if (Py_FlushLine())
+ PyErr_Clear();
fflush(stdout);
- if (err == 0)
- err = PyTraceBack_Print(tb, f);
+ err = PyTraceBack_Print(tb, f);
if (err == 0 &&
PyErr_GivenExceptionMatches(exception, PyExc_SyntaxError))
{
@@ -1062,7 +1063,8 @@
Py_DECREF(exitfunc);
}
- Py_FlushLine();
+ if (Py_FlushLine())
+ PyErr_Clear();
}
static void