Kaydet (Commit) 10402a30 authored tarafından Michael W. Hudson's avatar Michael W. Hudson

Patches #1298449 and #1298499: Add some missing checks for error

returns in cStringIO.c.  Thanks to Andrew Bennetts.

This must be a backport candidate.
üst 19e11c86
......@@ -44,6 +44,13 @@ class TestGenericStringIO(unittest.TestCase):
f.seek(0)
self.assertEqual(f.getvalue(), 'abc')
def test_writelines_error(self):
def errorGen():
yield 'a'
raise KeyboardInterrupt()
f = self.MODULE.StringIO()
self.assertRaises(KeyboardInterrupt, f.writelines, errorGen())
def test_truncate(self):
eq = self.assertEqual
f = self.MODULE.StringIO()
......
......@@ -50,6 +50,7 @@ Reimer Behrends
Thomas Bellman
Juan M. Bello Rivas
Alexander Belopolsky
Andrew Bennetts
Andy Bensky
Michel Van den Bergh
Eric Beser
......
......@@ -149,6 +149,9 @@ present).
Extension Modules
-----------------
- Patches #1298449 and #1298499: Add some missing checks for error
returns in cStringIO.c.
- Patch #1297028: fix segfault if call type on MultibyteCodec,
MultibyteStreamReader, or MultibyteStreamWriter
......
......@@ -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__},
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment