From 27a60b147cd4f60eaac99e54d4abf6a74de74311 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Thu, 22 May 1997 22:25:11 +0000 Subject: PyFile_WriteString now returns an error indicator instead of calling PyErr_Clear(). --- Objects/fileobject.c | 30 ++++++++++++++++++------------ 1 file 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; } } -- cgit v0.12