From 36234e8f6632673ed13658798307ff487d7a7f6a Mon Sep 17 00:00:00 2001 From: Jack Diederich Date: Thu, 21 Sep 2006 17:50:26 +0000 Subject: * 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 --- Lib/test/test_itertools.py | 4 ++++ Modules/itertoolsmodule.c | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Lib/test/test_itertools.py b/Lib/test/test_itertools.py index 6898725..2baa507 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 a41f55b..7fcbb10 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 * -- cgit v0.12