Skip to content

Commit 14f8007

Browse files
gh-160781: Only test BytesIO write overflow on the C implementation
1 parent 8a5e24a commit 14f8007

1 file changed

Lines changed: 9 additions & 4 deletions

File tree

‎Lib/test/test_io/test_memoryio.py‎

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -591,10 +591,6 @@ def test_issue141311(self):
591591
self.assertEqual(sys.maxsize, memio.seek(sys.maxsize))
592592
buf = bytearray(2)
593593
self.assertEqual(0, memio.readinto(buf))
594-
# Writing there must not overflow the buffer size.
595-
memio.seek(sys.maxsize - 1)
596-
self.assertRaises((MemoryError, OverflowError), memio.write, b"x")
597-
self.assertEqual(memio.getvalue(), b"")
598594

599595
def test_peek(self):
600596
buf = self.buftype("1234567890")
@@ -994,6 +990,15 @@ def __index__(self):
994990
self.assertEqual(stream.truncate(2**31), 2**31)
995991
self.assertEqual(stream.getvalue(), b'abc')
996992

993+
def test_write_overflow(self):
994+
# gh-160781: overallocation at a position near sys.maxsize
995+
# must raise OverflowError, not SystemError.
996+
memio = self.ioclass()
997+
memio.seek(sys.maxsize - 1)
998+
self.assertRaises(OverflowError, memio.write, b"x")
999+
self.assertEqual(memio.getvalue(), b"")
1000+
self.assertEqual(memio.tell(), sys.maxsize - 1)
1001+
9971002
def test_readinto_overlapping_buffer(self):
9981003
with self.ioclass(b'abcd') as stream:
9991004
with stream.getbuffer()[1:] as target:

0 commit comments

Comments
 (0)