[Python-3000-checkins] r59341 - python/branches/py3k/Python/pythonrun.c
guido.van.rossum
python-3000-checkins at python.org
Wed Dec 5 06:14:58 CET 2007
Author: guido.van.rossum
Date: Wed Dec 5 06:14:58 2007
New Revision: 59341
Modified:
python/branches/py3k/Python/pythonrun.c
Log:
Solve issue 1400 at least in part -- whenever we run Python code, at the end
we also flush stderr and stdout. (XXX this may override errors if there's a problem
flushing.)
Modified: python/branches/py3k/Python/pythonrun.c
==============================================================================
--- python/branches/py3k/Python/pythonrun.c (original)
+++ python/branches/py3k/Python/pythonrun.c Wed Dec 5 06:14:58 2007
@@ -1442,6 +1442,28 @@
return ret;
}
+static void
+flush_io(void)
+{
+ PyObject *f, *r;
+ f = PySys_GetObject("stderr");
+ if (f != NULL) {
+ r = PyObject_CallMethod(f, "flush", "");
+ if (r)
+ Py_DECREF(r);
+ else
+ PyErr_Clear();
+ }
+ f = PySys_GetObject("stdout");
+ if (f != NULL) {
+ r = PyObject_CallMethod(f, "flush", "");
+ if (r)
+ Py_DECREF(r);
+ else
+ PyErr_Clear();
+ }
+}
+
static PyObject *
run_mod(mod_ty mod, const char *filename, PyObject *globals, PyObject *locals,
PyCompilerFlags *flags, PyArena *arena)
@@ -1453,6 +1475,7 @@
return NULL;
v = PyEval_EvalCode(co, globals, locals);
Py_DECREF(co);
+ flush_io();
return v;
}
@@ -1485,6 +1508,7 @@
if (v && flags)
flags->cf_flags |= (co->co_flags & PyCF_MASK);
Py_DECREF(co);
+ flush_io();
return v;
}
More information about the Python-3000-checkins
mailing list