]> granicus.if.org Git - python/commitdiff
bpo-34070: open() only checks for isatty if buffering < 0 (GH-8187)
authorDavid Herberth <github@dav1d.de>
Fri, 19 Oct 2018 22:32:04 +0000 (00:32 +0200)
committerVictor Stinner <vstinner@redhat.com>
Fri, 19 Oct 2018 22:32:04 +0000 (00:32 +0200)
Misc/NEWS.d/next/Library/2018-07-11-20-51-20.bpo-34070.WpmFAu.rst [new file with mode: 0644]
Modules/_io/_iomodule.c

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 (file)
index 0000000..0088c62
--- /dev/null
@@ -0,0 +1,2 @@
+Make sure to only check if the handle is a tty, when opening
+a file with ``buffering=-1``.
index 0d8a638f40cfa4cf822ad9ccbf6b1d00ab658aad..eedca011d2ed864f221e4a386a671f5d36f1c9fe 100644 (file)
@@ -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;
     }