mmap: do all internal arithmetic with Py_ssize_t while being very careful about overflow
diff --git a/Lib/test/test_mmap.py b/Lib/test/test_mmap.py
index 648da3a..037c494 100644
--- a/Lib/test/test_mmap.py
+++ b/Lib/test/test_mmap.py
@@ -652,6 +652,16 @@
         finally:
             s.close()
 
+    def test_resize_past_pos(self):
+        m = mmap.mmap(-1, 8192)
+        self.addCleanup(m.close)
+        m.read(5000)
+        m.resize(4096)
+        self.assertEqual(m.read(14), '')
+        self.assertRaises(ValueError, m.read_byte,)
+        self.assertRaises(ValueError, m.write_byte, 'b')
+        self.assertRaises(ValueError, m.write, 'abc')
+
 
 class LargeMmapTests(unittest.TestCase):