summaryrefslogtreecommitdiff
path: root/Python/pythonrun.c
diff options
context:
space:
mode:
authorAntoine Pitrou <solipsis@pitrou.net>2009-01-26 21:48:00 +0000
committerAntoine Pitrou <solipsis@pitrou.net>2009-01-26 21:48:00 +0000
commit565f4a5e55d0d9d2154c6f66f2f0dcbd69fa550c (patch)
treedbda1f0aac8a5dc388150c8d98a450d1076c6690 /Python/pythonrun.c
parent1c46d9a20b03c141c811f0ec0222ec4c9ee52bbd (diff)
downloadcpython-565f4a5e55d0d9d2154c6f66f2f0dcbd69fa550c.tar.gz
Followup of #4705: we can't skip the binary buffering layer for stdin because FileIO doesn't have a read1() method
Diffstat (limited to 'Python/pythonrun.c')
-rw-r--r--Python/pythonrun.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/Python/pythonrun.c b/Python/pythonrun.c
index 6819be5547..65c6f5f2da 100644
--- a/Python/pythonrun.c
+++ b/Python/pythonrun.c
@@ -739,7 +739,12 @@ create_stdio(PyObject* io,
PyObject *line_buffering;
int buffering, isatty;
- if (Py_UnbufferedStdioFlag)
+ /* stdin is always opened in buffered mode, first because it shouldn't
+ make a difference in common use cases, second because TextIOWrapper
+ depends on the presence of a read1() method which only exists on
+ buffered streams.
+ */
+ if (Py_UnbufferedStdioFlag && write_mode)
buffering = 0;
else
buffering = -1;
@@ -753,7 +758,7 @@ create_stdio(PyObject* io,
if (buf == NULL)
goto error;
- if (!Py_UnbufferedStdioFlag) {
+ if (buffering) {
raw = PyObject_GetAttrString(buf, "raw");
if (raw == NULL)
goto error;