diff -r 265d35e8fe82 Lib/test/test_bisect.py --- a/Lib/test/test_bisect.py Fri Jan 27 21:17:04 2012 +0000 +++ b/Lib/test/test_bisect.py Sat Jan 28 10:03:24 2012 +0000 @@ -122,6 +122,13 @@ self.assertRaises(ValueError, mod.insort_left, [1, 2, 3], 5, -1, 3), self.assertRaises(ValueError, mod.insort_right, [1, 2, 3], 5, -1, 3), + def test_large_range(self): + # Issue 13496 + mod = self.module + data = range(sys.maxsize-1) + self.assertEqual(mod.bisect_left(data, sys.maxsize-3), sys.maxsize-3) + self.assertEqual(mod.bisect_right(data, sys.maxsize-3), sys.maxsize-2) + def test_random(self, n=25): from random import randrange for i in range(n): diff -r 265d35e8fe82 Modules/_bisectmodule.c --- a/Modules/_bisectmodule.c Fri Jan 27 21:17:04 2012 +0000 +++ b/Modules/_bisectmodule.c Sat Jan 28 10:03:24 2012 +0000 @@ -21,7 +21,7 @@ return -1; } while (lo < hi) { - mid = (lo + hi) / 2; + mid = (lo + (size_t)hi) / 2; litem = PySequence_GetItem(list, mid); if (litem == NULL) return -1; @@ -123,7 +123,7 @@ return -1; } while (lo < hi) { - mid = (lo + hi) / 2; + mid = (lo + (size_t)hi) / 2; litem = PySequence_GetItem(list, mid); if (litem == NULL) return -1;