Author: Philip Jenvey <pjen...@underboss.org> Branch: length-hint Changeset: r57874:2ec86d638139 Date: 2012-10-07 15:27 -0700 http://bitbucket.org/pypy/pypy/changeset/2ec86d638139/
Log: fix itertools length_hint returning a negative length diff --git a/pypy/module/itertools/interp_itertools.py b/pypy/module/itertools/interp_itertools.py --- a/pypy/module/itertools/interp_itertools.py +++ b/pypy/module/itertools/interp_itertools.py @@ -92,7 +92,7 @@ self.count = 0 else: self.counting = True - self.count = self.space.int_w(w_times) + self.count = max(self.space.int_w(w_times), 0) def next_w(self): if self.counting: diff --git a/pypy/module/itertools/test/test_itertools.py b/pypy/module/itertools/test/test_itertools.py --- a/pypy/module/itertools/test/test_itertools.py +++ b/pypy/module/itertools/test/test_itertools.py @@ -90,11 +90,15 @@ def test_repeat_len(self): import itertools + import operator r = itertools.repeat('a', 15) r.next() raises(TypeError, "len(itertools.repeat('xkcd'))") + r = itertools.repeat('a', -3) + assert operator._length_hint(r, 3) == 0 + def test_takewhile(self): import itertools _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit