gh-157048: check for buffer errors before mutating in BytesIO.__init_… · python/cpython@d125f00

GitHub

Original file line numberDiff line numberDiff line change@@ -1025,6 +1025,18 @@ def test_cow_mutable(self):

10251025memio=self.ioclass(ba)

10261026self.assertEqual(sys.getrefcount(ba), old_rc)

102710271028+deftest_write_with_export(self):

1029+memio=self.ioclass(b"abcd")

1030+memio.seek(2)

1031+withmemio.getbuffer() asview:

1032+self.assertRaises(BufferError, memio.__init__, b"replacement")

1033+self.assertEqual(memio.tell(), 2)

1034+self.assertEqual(memio.getvalue(), b"abcd")

1035+self.assertEqual(bytes(view), b"abcd")

1036+memio.write(b"X")

1037+self.assertEqual(memio.getvalue(), b"abXd")

1038+1039+10281040classCStringIOTest(PyStringIOTest):

10291041ioclass=io.StringIO

10301042UnsupportedOperation=io.UnsupportedOperation