Author: Ronan Lamy <[email protected]>
Branch: py3.6
Changeset: r97250:bad11dff1f59
Date: 2019-08-23 17:43 +0100
http://bitbucket.org/pypy/pypy/changeset/bad11dff1f59/
Log: Reset raw_pos after unwinding the raw stream (bpo-32228)
diff --git a/pypy/module/_io/interp_bufferedio.py
b/pypy/module/_io/interp_bufferedio.py
--- a/pypy/module/_io/interp_bufferedio.py
+++ b/pypy/module/_io/interp_bufferedio.py
@@ -319,7 +319,6 @@
with self.lock:
if self.writable:
self._writer_flush_unlocked(space)
- self._writer_reset_buf()
if whence == 1:
pos -= self._raw_offset()
@@ -371,6 +370,7 @@
def _writer_flush_unlocked(self, space):
if self.write_end == -1 or self.write_pos == self.write_end:
+ self._writer_reset_buf()
return
# First, rewind
rewind = self._raw_offset() + (self.pos - self.write_pos)
diff --git a/pypy/module/_io/test/test_bufferedio.py
b/pypy/module/_io/test/test_bufferedio.py
--- a/pypy/module/_io/test/test_bufferedio.py
+++ b/pypy/module/_io/test/test_bufferedio.py
@@ -513,6 +513,17 @@
assert b.truncate() == 8
assert b.tell() == 8
+ def test_truncate_after_write(self):
+ import _io
+ raw = _io.FileIO(self.tmpfile, 'rb+')
+ raw.write(b'\x00' * 50)
+ raw.seek(0)
+ b = _io.BufferedRandom(raw, 10)
+ b.write(b'\x00' * 11)
+ b.read(1)
+ b.truncate()
+ assert b.tell() == 12
+
def test_write_non_blocking(self):
import _io, io
class MockNonBlockWriterIO(io.RawIOBase):
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit