From 27fe9fc448ed2669320e1b3e7e43c955137b980a Mon Sep 17 00:00:00 2001 From: Antoine Pitrou Date: Mon, 26 Jan 2009 21:48:00 +0000 Subject: Followup of #4705: we can't skip the binary buffering layer for stdin because FileIO doesn't have a read1() method --- Python/pythonrun.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'Python/pythonrun.c') 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; -- cgit v1.2.1