From 10402a306f613b37c96b51771e7ad0e1cf60a3a4 Mon Sep 17 00:00:00 2001 From: "Michael W. Hudson" Date: Thu, 22 Sep 2005 09:19:01 +0000 Subject: Patches #1298449 and #1298499: Add some missing checks for error returns in cStringIO.c. Thanks to Andrew Bennetts. This must be a backport candidate. --- Modules/cStringIO.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) (limited to 'Modules/cStringIO.c') diff --git a/Modules/cStringIO.c b/Modules/cStringIO.c index b7333fdd38..9ed77d8206 100644 --- a/Modules/cStringIO.c +++ b/Modules/cStringIO.c @@ -241,7 +241,10 @@ IO_readlines(IOobject *self, PyObject *args) { 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 @@ O_writelines(Oobject *self, PyObject *args) { 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__}, -- cgit v1.2.1