diff options
author | Antoine Pitrou <solipsis@pitrou.net> | 2011-05-12 22:16:28 (GMT) |
---|---|---|
committer | Antoine Pitrou <solipsis@pitrou.net> | 2011-05-12 22:16:28 (GMT) |
commit | 00dd182b8ec1629a35cb6e9d551dedff6b7149f7 (patch) | |
tree | 733a51f75a7d40a5d3f395fb609348d0ae4eeb66 /Modules/_io/bufferedio.c | |
parent | b00d0c49448c48b6ddbd85f1328edf8794ae20f7 (diff) | |
parent | 7c4048918053e457eadaf76f2a1906d2cff879f2 (diff) | |
download | cpython-00dd182b8ec1629a35cb6e9d551dedff6b7149f7.zip cpython-00dd182b8ec1629a35cb6e9d551dedff6b7149f7.tar.gz cpython-00dd182b8ec1629a35cb6e9d551dedff6b7149f7.tar.bz2 |
Issue #12062: Fix a flushing bug when doing a certain type of I/O sequence
on a file opened in read+write mode (namely: reading, seeking a bit forward,
writing, then seeking before the previous write but still within buffered
data, and writing again).
Diffstat (limited to 'Modules/_io/bufferedio.c')
-rw-r--r-- | Modules/_io/bufferedio.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/Modules/_io/bufferedio.c b/Modules/_io/bufferedio.c index 386a880..26ebde0 100644 --- a/Modules/_io/bufferedio.c +++ b/Modules/_io/bufferedio.c @@ -1838,7 +1838,7 @@ bufferedwriter_write(buffered *self, PyObject *args) avail = Py_SAFE_DOWNCAST(self->buffer_size - self->pos, Py_off_t, Py_ssize_t); if (buf.len <= avail) { memcpy(self->buffer + self->pos, buf.buf, buf.len); - if (!VALID_WRITE_BUFFER(self)) { + if (!VALID_WRITE_BUFFER(self) || self->write_pos > self->pos) { self->write_pos = self->pos; } ADJUST_POSITION(self, self->pos + buf.len); |