Py_FlushLine and PyFile_WriteString now return error indicators
instead of calling PyErr_Clear().  Add checking of those errors.
diff --git a/Python/ceval.c b/Python/ceval.c
index e8ba965..7897006 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -930,11 +930,18 @@
 			    (err = PyDict_SetItemString(
 				    f->f_builtins, "_", v)) == 0 &&
 			    !Py_SuppressPrintingFlag) {
-				Py_FlushLine();
-				x = PySys_GetObject("stdout");
-				err = PyFile_WriteObject(v, x, 0);
-				PyFile_SoftSpace(x, 1);
-				Py_FlushLine();
+				err = Py_FlushLine();
+				if (err == NULL) {
+					x = PySys_GetObject("stdout");
+					if (x == NULL)
+						err = -1;
+				}
+				if (err == 0)
+					err = PyFile_WriteObject(v, x, 0);
+				if (err == 0) {
+					PyFile_SoftSpace(x, 1);
+					err = Py_FlushLine();
+				}
 			}
 			Py_DECREF(v);
 			break;
@@ -943,8 +950,9 @@
 			v = POP();
 			w = PySys_GetObject("stdout");
 			if (PyFile_SoftSpace(w, 1))
-				PyFile_WriteString(" ", w);
-			err = PyFile_WriteObject(v, w, Py_PRINT_RAW);
+				err = PyFile_WriteString(" ", w);
+			if (err == 0)
+				err = PyFile_WriteObject(v, w, Py_PRINT_RAW);
 			if (err == 0 && PyString_Check(v)) {
 				/* XXX move into writeobject() ? */
 				char *s = PyString_AsString(v);
@@ -964,8 +972,9 @@
 				PyErr_SetString(PyExc_RuntimeError,
 						"lost sys.stdout");
 			else {
-				PyFile_WriteString("\n", x);
-				PyFile_SoftSpace(x, 0);
+				err = PyFile_WriteString("\n", x);
+				if (err == 0)
+					PyFile_SoftSpace(x, 0);
 			}
 			break;
 		
@@ -2111,12 +2120,15 @@
 	return current_frame == NULL ? 0 : current_frame->f_restricted;
 }
 
-void
+int
 Py_FlushLine()
 {
 	PyObject *f = PySys_GetObject("stdout");
-	if (PyFile_SoftSpace(f, 0))
-		PyFile_WriteString("\n", f);
+	if (f == NULL)
+		return 0;
+	if (!PyFile_SoftSpace(f, 0))
+		return 0;
+	return PyFile_WriteString("\n", f);
 }