Mercurial > cpython-lru_cache-weakref
diff Modules/cStringIO.c @ 35623:774bf9a38b2a legacy-trunk
Patches #1298449 and #1298499: Add some missing checks for error
returns in cStringIO.c. Thanks to Andrew Bennetts.
This must be a backport candidate.
| author | Michael W. Hudson <mwh@python.net> |
|---|---|
| date | Thu, 22 Sep 2005 09:19:01 +0000 |
| parents | db1bafa9b656 |
| children | 9541369b0dca |
line wrap: on
line diff
--- a/Modules/cStringIO.c Wed Sep 21 20:52:11 2005 +0000 +++ b/Modules/cStringIO.c Thu Sep 22 09:19:01 2005 +0000 @@ -241,7 +241,10 @@ line = PyString_FromStringAndSize (output, n); if (!line) goto err; - PyList_Append (result, line); + if (PyList_Append (result, line) == -1) { + Py_DECREF (line); + goto err; + } Py_DECREF (line); length += n; if (hint > 0 && length >= hint) @@ -440,13 +443,18 @@ Py_DECREF(it); Py_DECREF(s); return NULL; - } - Py_DECREF(s); - } - Py_DECREF(it); - Py_RETURN_NONE; + } + Py_DECREF(s); + } + + Py_DECREF(it); + + /* See if PyIter_Next failed */ + if (PyErr_Occurred()) + return NULL; + + Py_RETURN_NONE; } - static struct PyMethodDef O_methods[] = { /* Common methods: */ {"flush", (PyCFunction)IO_flush, METH_NOARGS, IO_flush__doc__},
