diff --git a/Lib/test/test_io/test_memoryio.py b/Lib/test/test_io/test_memoryio.py index 48337ae9e80a53c..e8b47951b403c11 100644 --- a/Lib/test/test_io/test_memoryio.py +++ b/Lib/test/test_io/test_memoryio.py @@ -591,10 +591,6 @@ def test_issue141311(self): self.assertEqual(sys.maxsize, memio.seek(sys.maxsize)) buf = bytearray(2) self.assertEqual(0, memio.readinto(buf)) - # Writing there must not overflow the buffer size. - memio.seek(sys.maxsize - 1) - self.assertRaises((MemoryError, OverflowError), memio.write, b"x") - self.assertEqual(memio.getvalue(), b"") def test_peek(self): buf = self.buftype("1234567890") @@ -994,6 +990,15 @@ def __index__(self): self.assertEqual(stream.truncate(2**31), 2**31) self.assertEqual(stream.getvalue(), b'abc') + def test_write_overflow(self): + # gh-160781: overallocation at a position near sys.maxsize + # must raise OverflowError, not SystemError. + memio = self.ioclass() + memio.seek(sys.maxsize - 1) + self.assertRaises(OverflowError, memio.write, b"x") + self.assertEqual(memio.getvalue(), b"") + self.assertEqual(memio.tell(), sys.maxsize - 1) + def test_readinto_overlapping_buffer(self): with self.ioclass(b'abcd') as stream: with stream.getbuffer()[1:] as target: