summaryrefslogtreecommitdiffstats
path: root/Modules/_io/textio.c
diff options
context:
space:
mode:
authorAntoine Pitrou <solipsis@pitrou.net>2014-05-08 22:31:32 (GMT)
committerAntoine Pitrou <solipsis@pitrou.net>2014-05-08 22:31:32 (GMT)
commit38ca5a7b6d7744cae586c824159d1a4be791cd89 (patch)
treee2671a465d02bfd41d95b29a0cef62db05212590 /Modules/_io/textio.c
parentd30b022b5ea1b73595b330d9d4aba36aa0ebdd29 (diff)
parentc644e7c39f7adf0ed783e128b0278665133bf523 (diff)
downloadcpython-38ca5a7b6d7744cae586c824159d1a4be791cd89.zip
cpython-38ca5a7b6d7744cae586c824159d1a4be791cd89.tar.gz
cpython-38ca5a7b6d7744cae586c824159d1a4be791cd89.tar.bz2
Issue #21396: Fix TextIOWrapper(..., write_through=True) to not force a flush() on the underlying binary stream.
Patch by akira.
Diffstat (limited to 'Modules/_io/textio.c')
-rw-r--r--Modules/_io/textio.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/Modules/_io/textio.c b/Modules/_io/textio.c
index d5c7339..24c7b45 100644
--- a/Modules/_io/textio.c
+++ b/Modules/_io/textio.c
@@ -1297,7 +1297,7 @@ textiowrapper_write(textio *self, PyObject *args)
PyObject *b;
Py_ssize_t textlen;
int haslf = 0;
- int needflush = 0;
+ int needflush = 0, text_needflush = 0;
CHECK_INITIALIZED(self);
@@ -1331,8 +1331,8 @@ textiowrapper_write(textio *self, PyObject *args)
}
if (self->write_through)
- needflush = 1;
- else if (self->line_buffering &&
+ text_needflush = 1;
+ if (self->line_buffering &&
(haslf ||
PyUnicode_FindChar(text, '\r', 0, PyUnicode_GET_LENGTH(text), 1) != -1))
needflush = 1;
@@ -1363,7 +1363,8 @@ textiowrapper_write(textio *self, PyObject *args)
}
self->pending_bytes_count += PyBytes_GET_SIZE(b);
Py_DECREF(b);
- if (self->pending_bytes_count > self->chunk_size || needflush) {
+ if (self->pending_bytes_count > self->chunk_size || needflush ||
+ text_needflush) {
if (_textiowrapper_writeflush(self) < 0)
return NULL;
}