diff options
author | Guido van Rossum <guido@python.org> | 1997-05-22 22:25:11 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 1997-05-22 22:25:11 (GMT) |
commit | 27a60b147cd4f60eaac99e54d4abf6a74de74311 (patch) | |
tree | c13d12a04fe57eb4d6261cd6ca20bf5fcf82e1d3 | |
parent | 745b8cff08e105d1b612e48f3087127f7cdeecc1 (diff) | |
download | cpython-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.c | 30 |
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; } } |