Mercurial > cpython-lru_cache-weakref
diff Python/ceval.c @ 5606:495fbde64a73 legacy-trunk
Py_FlushLine and PyFile_WriteString now return error indicators
instead of calling PyErr_Clear(). Add checking of those errors.
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Thu, 22 May 1997 22:26:18 +0000 |
| parents | 4329e4077cf3 |
| children | 10e9cfa010f0 |
line wrap: on
line diff
--- a/Python/ceval.c Thu May 22 22:25:11 1997 +0000 +++ b/Python/ceval.c Thu May 22 22:26:18 1997 +0000 @@ -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); }
