From 8deab9672554edaf58f91e238cc899463d53f6ea Mon Sep 17 00:00:00 2001 From: David Herberth Date: Sat, 20 Oct 2018 00:32:04 +0200 Subject: bpo-34070: open() only checks for isatty if buffering < 0 (GH-8187) --- Misc/NEWS.d/next/Library/2018-07-11-20-51-20.bpo-34070.WpmFAu.rst | 2 ++ Modules/_io/_iomodule.c | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2018-07-11-20-51-20.bpo-34070.WpmFAu.rst diff --git a/Misc/NEWS.d/next/Library/2018-07-11-20-51-20.bpo-34070.WpmFAu.rst b/Misc/NEWS.d/next/Library/2018-07-11-20-51-20.bpo-34070.WpmFAu.rst new file mode 100644 index 0000000..0088c62 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2018-07-11-20-51-20.bpo-34070.WpmFAu.rst @@ -0,0 +1,2 @@ +Make sure to only check if the handle is a tty, when opening +a file with ``buffering=-1``. diff --git a/Modules/_io/_iomodule.c b/Modules/_io/_iomodule.c index 0d8a638..eedca01 100644 --- a/Modules/_io/_iomodule.c +++ b/Modules/_io/_iomodule.c @@ -241,7 +241,7 @@ _io_open_impl(PyObject *module, PyObject *file, const char *mode, char rawmode[6], *m; int line_buffering, is_number; - long isatty; + long isatty = 0; PyObject *raw, *modeobj = NULL, *buffer, *wrapper, *result = NULL, *path_or_fd = NULL; @@ -388,7 +388,7 @@ _io_open_impl(PyObject *module, PyObject *file, const char *mode, goto error; /* buffering */ - { + if (buffering < 0) { PyObject *res = _PyObject_CallMethodId(raw, &PyId_isatty, NULL); if (res == NULL) goto error; @@ -398,7 +398,7 @@ _io_open_impl(PyObject *module, PyObject *file, const char *mode, goto error; } - if (buffering == 1 || (buffering < 0 && isatty)) { + if (buffering == 1 || isatty) { buffering = -1; line_buffering = 1; } -- cgit v0.12