Author: Philip Jenvey <[email protected]>
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
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit