summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1997-05-22 22:25:11 (GMT)
committerGuido van Rossum <guido@python.org>1997-05-22 22:25:11 (GMT)
commit27a60b147cd4f60eaac99e54d4abf6a74de74311 (patch)
treec13d12a04fe57eb4d6261cd6ca20bf5fcf82e1d3
parent745b8cff08e105d1b612e48f3087127f7cdeecc1 (diff)
downloadcpython-27a60b147cd4f60eaac99e54d4abf6a74de74311.zip
cpython-27a60b147cd4f60eaac99e54d4abf6a74de74311.tar.gz
cpython-27a60b147cd4f60eaac99e54d4abf6a74de74311.tar.bz2
PyFile_WriteString now returns an error indicator instead of calling
PyErr_Clear().
-rw-r--r--Objects/fileobject.c30
1 files changed, 18 insertions, 12 deletions
diff --git a/Objects/fileobject.c b/Objects/fileobject.c
index 1d85e20..9547d5d 100644
--- a/Objects/fileobject.c
+++ b/Objects/fileobject.c
@@ -997,28 +997,34 @@ PyFile_WriteObject(v, f, flags)
return 0;
}
-void
+int
PyFile_WriteString(s, f)
char *s;
PyObject *f;
{
if (f == NULL) {
- /* Do nothing */
+ /* Should be caused by a pre-existing error */
+ if(!PyErr_Occurred())
+ PyErr_SetString(PyExc_SystemError,
+ "null file for PyFile_WriteString");
+ return -1;
}
else if (PyFile_Check(f)) {
FILE *fp = PyFile_AsFile(f);
- if (fp != NULL)
- fputs(s, fp);
+ if (fp == NULL) {
+ err_closed();
+ return -1;
+ }
+ fputs(s, fp);
+ return 0;
}
else if (!PyErr_Occurred()) {
PyObject *v = PyString_FromString(s);
- if (v == NULL) {
- PyErr_Clear();
- }
- else {
- if (PyFile_WriteObject(v, f, Py_PRINT_RAW) != 0)
- PyErr_Clear();
- Py_DECREF(v);
- }
+ int err;
+ if (v == NULL)
+ return -1;
+ err = PyFile_WriteObject(v, f, Py_PRINT_RAW);
+ Py_DECREF(v);
+ return err;
}
}