diff -r cadef389fdbc Lib/test/test_memoryview.py --- a/Lib/test/test_memoryview.py Fri Jun 27 13:55:28 2014 +0200 +++ b/Lib/test/test_memoryview.py Fri Jun 27 22:15:01 2014 +0200 @@ -36,8 +36,9 @@ class AbstractMemoryTests: # Bounds checking self.assertRaises(IndexError, lambda: m[6]) self.assertRaises(IndexError, lambda: m[-7]) - self.assertRaises(IndexError, lambda: m[sys.maxsize]) - self.assertRaises(IndexError, lambda: m[-sys.maxsize]) + # indexes larger than the C type Py_ssize_t + for index in (-sys.maxsize*2, sys.maxsize*2): + self.assertRaises(IndexError, lambda: m[index]) # Type checking self.assertRaises(TypeError, lambda: m[None]) self.assertRaises(TypeError, lambda: m[0.0]) @@ -99,8 +100,9 @@ class AbstractMemoryTests: # Bounds checking self.assertRaises(IndexError, setitem, 6, b"a") self.assertRaises(IndexError, setitem, -7, b"a") - self.assertRaises(IndexError, setitem, sys.maxsize, b"a") - self.assertRaises(IndexError, setitem, -sys.maxsize, b"a") + # indexes larger than the C type Py_ssize_t + for index in (-sys.maxsize*2, sys.maxsize*2): + self.assertRaises(IndexError, setitem, index, b"a") # Wrong index/slice types self.assertRaises(TypeError, setitem, 0.0, b"a") self.assertRaises(TypeError, setitem, (0,), b"a") @@ -360,6 +362,15 @@ class AbstractMemoryTests: self.assertEqual(list(reversed(m)), aslist) self.assertEqual(list(reversed(m)), list(m[::-1])) + def test_large_slice(self): + for tp in self._types: + b = tp(self._source) + m = self._view(b) + # index larger than the C type Py_ssize_t + index = sys.maxsize * 2 + self.assertEqual(list(m[index:]), []) + self.assertEqual(list(m[index::2]), []) + # Variations on source objects for the buffer: bytes-like objects, then arrays # with itemsize > 1.