Skip to content

Commit 9e0377c

Browse files
cmaloneyclaude
andcommitted
gh-71448: Test BytesIO.truncate() failure on shared and private buffers
The loop wrote to both streams first, so neither started shared, and which path the second size took depended on the build: getvalue() leaves the buffer shared on free-threading (sticky buf_shared) but not on the default build once its result is dropped. Use a fresh shared and private stream for each size. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 parent b0b473f commit 9e0377c

1 file changed

Lines changed: 5 additions & 5 deletions

File tree

‎Lib/test/test_io/test_memoryio.py‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -601,14 +601,14 @@ def test_truncate_extend(self):
601601
self.assertEqual(buf, b"abcdef")
602602

603603
def test_truncate_extend_too_large(self):
604-
for memio in self.ioclass(b"abc"), self.ioclass():
605-
memio.write(b"abc")
606-
for size in sys.maxsize, sys.maxsize - 1:
607-
with self.subTest(size=size):
604+
for size in sys.maxsize, sys.maxsize - 1:
605+
private = self.ioclass()
606+
private.write(b"abc")
607+
for memio in self.ioclass(b"abc"), private:
608+
with self.subTest(size=size, shared=memio is not private):
608609
self.assertRaises((MemoryError, OverflowError),
609610
memio.truncate, size)
610611
self.assertEqual(memio.getvalue(), b"abc")
611-
self.assertEqual(memio.tell(), 3)
612612

613613
@support.bigmemtest(size=support._2G, memuse=1, dry_run=False)
614614
def test_truncate_extend_bigmem(self, size):

0 commit comments

Comments
 (0)