mirror of
https://github.com/python/cpython.git
synced 2025-08-03 00:23:06 +00:00
Make xrange more Py_ssize_t aware, by assuming a Py_ssize_t is always at
least as big as a long. I believe this to be a safe assumption that is being made in many parts of CPython, but a check could be added. len(xrange(sys.maxint)) works now, so fix the testsuite's odd exception for 64-bit platforms too. It also fixes 'zip(xrange(sys.maxint), it)' as a portable-ish (if expensive) alternative to enumerate(it); since zip() now calls len(), this was breaking on (real) 64-bit platforms. No additional test was added for that behaviour.
This commit is contained in:
parent
4aaaa49bac
commit
f4d8f39053
2 changed files with 1 additions and 13 deletions
|
@ -54,12 +54,7 @@ class XrangeTest(unittest.TestCase):
|
|||
self.assertRaises(OverflowError, xrange, 0, 2*sys.maxint)
|
||||
|
||||
r = xrange(-sys.maxint, sys.maxint, 2)
|
||||
if sys.maxint > 0x7fffffff:
|
||||
# XXX raising ValueError is less than ideal, but this can't
|
||||
# be fixed until range_length() returns a long in rangeobject.c
|
||||
self.assertRaises(ValueError, len, r)
|
||||
else:
|
||||
self.assertEqual(len(r), sys.maxint)
|
||||
self.assertEqual(len(r), sys.maxint)
|
||||
self.assertRaises(OverflowError, xrange, -sys.maxint-1, sys.maxint, 2)
|
||||
|
||||
def test_main():
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue