aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Lib/test/test_winconsoleio.py4
-rw-r--r--Misc/NEWS.d/next/Windows/2018-02-19-13-54-42.bpo-31966._Q3HPb.rst1
-rw-r--r--Modules/_io/winconsoleio.c3
3 files changed, 8 insertions, 0 deletions
diff --git a/Lib/test/test_winconsoleio.py b/Lib/test/test_winconsoleio.py
index 656483cf162..a78fa4d7d91 100644
--- a/Lib/test/test_winconsoleio.py
+++ b/Lib/test/test_winconsoleio.py
@@ -121,6 +121,10 @@ class WindowsConsoleIOTests(unittest.TestCase):
else:
self.assertNotIsInstance(f, ConIO)
+ def test_write_empty_data(self):
+ with ConIO('CONOUT$', 'w') as f:
+ self.assertEqual(f.write(b''), 0)
+
def assertStdinRoundTrip(self, text):
stdin = open('CONIN$', 'r')
old_stdin = sys.stdin
diff --git a/Misc/NEWS.d/next/Windows/2018-02-19-13-54-42.bpo-31966._Q3HPb.rst b/Misc/NEWS.d/next/Windows/2018-02-19-13-54-42.bpo-31966._Q3HPb.rst
new file mode 100644
index 00000000000..042a4d835ab
--- /dev/null
+++ b/Misc/NEWS.d/next/Windows/2018-02-19-13-54-42.bpo-31966._Q3HPb.rst
@@ -0,0 +1 @@
+Fixed WindowsConsoleIO.write() for writing empty data.
diff --git a/Modules/_io/winconsoleio.c b/Modules/_io/winconsoleio.c
index 30d1c767afc..b85c11b3405 100644
--- a/Modules/_io/winconsoleio.c
+++ b/Modules/_io/winconsoleio.c
@@ -964,6 +964,9 @@ _io__WindowsConsoleIO_write_impl(winconsoleio *self, Py_buffer *b)
if (!self->writable)
return err_mode("writing");
+ if (!b->len) {
+ return PyLong_FromLong(0);
+ }
if (b->len > BUFMAX)
len = BUFMAX;
else