mirror of
https://github.com/python/cpython.git
synced 2025-07-29 06:05:00 +00:00
Bug #1550714: fix SystemError from itertools.tee on negative value for n.
Needs backport to 2.5.1 and earlier.
This commit is contained in:
parent
6aefa916a9
commit
69e8897505
3 changed files with 9 additions and 2 deletions
|
@ -371,6 +371,7 @@ class TestBasicOps(unittest.TestCase):
|
||||||
|
|
||||||
# test values of n
|
# test values of n
|
||||||
self.assertRaises(TypeError, tee, 'abc', 'invalid')
|
self.assertRaises(TypeError, tee, 'abc', 'invalid')
|
||||||
|
self.assertRaises(ValueError, tee, [], -1)
|
||||||
for n in xrange(5):
|
for n in xrange(5):
|
||||||
result = tee('abc', n)
|
result = tee('abc', n)
|
||||||
self.assertEqual(type(result), tuple)
|
self.assertEqual(type(result), tuple)
|
||||||
|
|
|
@ -27,6 +27,8 @@ Extension Modules
|
||||||
|
|
||||||
- Bug #1548092: fix curses.tparm seg fault on invalid input.
|
- Bug #1548092: fix curses.tparm seg fault on invalid input.
|
||||||
|
|
||||||
|
- Bug #1550714: fix SystemError from itertools.tee on negative value for n.
|
||||||
|
|
||||||
|
|
||||||
Tests
|
Tests
|
||||||
-----
|
-----
|
||||||
|
|
|
@ -618,11 +618,15 @@ static PyTypeObject tee_type = {
|
||||||
static PyObject *
|
static PyObject *
|
||||||
tee(PyObject *self, PyObject *args)
|
tee(PyObject *self, PyObject *args)
|
||||||
{
|
{
|
||||||
int i, n=2;
|
Py_ssize_t i, n=2;
|
||||||
PyObject *it, *iterable, *copyable, *result;
|
PyObject *it, *iterable, *copyable, *result;
|
||||||
|
|
||||||
if (!PyArg_ParseTuple(args, "O|i", &iterable, &n))
|
if (!PyArg_ParseTuple(args, "O|n", &iterable, &n))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
if (n < 0) {
|
||||||
|
PyErr_SetString(PyExc_ValueError, "n must be >= 0");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
result = PyTuple_New(n);
|
result = PyTuple_New(n);
|
||||||
if (result == NULL)
|
if (result == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue