mirror of
https://github.com/python/cpython.git
synced 2025-08-03 00:23:06 +00:00
bpo-45030: Fix integer overflow in __reduce__ of the range iterator (GH-28000)
It happened with fast range iterator when the calculated stop = start + step * len
was out of the C long range.
(cherry picked from commit 936f6a16b9
)
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
This commit is contained in:
parent
2ad114ddff
commit
ed9f927527
3 changed files with 27 additions and 18 deletions
|
@ -375,8 +375,14 @@ class RangeTest(unittest.TestCase):
|
|||
|
||||
def test_iterator_pickling(self):
|
||||
testcases = [(13,), (0, 11), (-22, 10), (20, 3, -1), (13, 21, 3),
|
||||
(-2, 2, 2), (2**31-3, 2**31-1), (2**33, 2**33+2),
|
||||
(2**63-3, 2**63-1), (2**65, 2**65+2)]
|
||||
(-2, 2, 2)]
|
||||
for M in 2**31, 2**63:
|
||||
testcases += [
|
||||
(M-3, M-1), (4*M, 4*M+2),
|
||||
(M-2, M-1, 2), (-M+1, -M, -2),
|
||||
(1, 2, M-1), (-1, -2, -M),
|
||||
(1, M-1, M-1), (-1, -M, -M),
|
||||
]
|
||||
for proto in range(pickle.HIGHEST_PROTOCOL + 1):
|
||||
for t in testcases:
|
||||
with self.subTest(proto=proto, t=t):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue