From: Jack Diederich Date: Thu, 21 Sep 2006 17:50:26 +0000 (+0000) Subject: * regression bug, count_next was coercing a Py_ssize_t to an unsigned Py_size_t X-Git-Tag: v2.6a1~2648 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=36234e8f6632673ed13658798307ff487d7a7f6a;p=python * regression bug, count_next was coercing a Py_ssize_t to an unsigned Py_size_t which breaks negative counts * added test for negative numbers will backport to 2.5.1 --- diff --git a/Lib/test/test_itertools.py b/Lib/test/test_itertools.py index 68987257d7..2baa507554 100644 --- a/Lib/test/test_itertools.py +++ b/Lib/test/test_itertools.py @@ -58,6 +58,10 @@ class TestBasicOps(unittest.TestCase): self.assertEqual(repr(c), 'count(3)') c.next() self.assertEqual(repr(c), 'count(4)') + c = count(-9) + self.assertEqual(repr(c), 'count(-9)') + c.next() + self.assertEqual(c.next(), -8) def test_cycle(self): self.assertEqual(take(10, cycle('abc')), list('abcabcabca')) diff --git a/Modules/itertoolsmodule.c b/Modules/itertoolsmodule.c index a41f55b20d..7fcbb10366 100644 --- a/Modules/itertoolsmodule.c +++ b/Modules/itertoolsmodule.c @@ -2072,7 +2072,7 @@ count_new(PyTypeObject *type, PyObject *args, PyObject *kwds) static PyObject * count_next(countobject *lz) { - return PyInt_FromSize_t(lz->cnt++); + return PyInt_FromSsize_t(lz->cnt++); } static PyObject *