]> granicus.if.org Git - python/commitdiff
PyFile_WriteString now returns an error indicator instead of calling
authorGuido van Rossum <guido@python.org>
Thu, 22 May 1997 22:25:11 +0000 (22:25 +0000)
committerGuido van Rossum <guido@python.org>
Thu, 22 May 1997 22:25:11 +0000 (22:25 +0000)
PyErr_Clear().

Objects/fileobject.c

index 1d85e20e5590ba5df5afb25a6b5d3b28919c42f2..9547d5d82df8b4d320e79f0da390c31931b2bb75 100644 (file)
@@ -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;
        }
 }