summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2017-06-08 16:19:25 (GMT)
committerGitHub <noreply@github.com>2017-06-08 16:19:25 (GMT)
commit29adc13bd797d9c9e7fcb893a7c49ce7f7ad388c (patch)
tree4d791ba4920af78257ff90789c4f885f2d22285f
parentd52aa31378ae43e044a300edfe8285954c167216 (diff)
downloadcpython-29adc13bd797d9c9e7fcb893a7c49ce7f7ad388c.zip
cpython-29adc13bd797d9c9e7fcb893a7c49ce7f7ad388c.tar.gz
cpython-29adc13bd797d9c9e7fcb893a7c49ce7f7ad388c.tar.bz2
bpo-30601: Fix a refleak in WindowsConsoleIO (#2003)
Fix a reference leak in _io._WindowsConsoleIO: PyUnicode_FSDecoder() always initialize decodedname when it succeed and it doesn't clear input decodedname object.
-rw-r--r--Modules/_io/winconsoleio.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/Modules/_io/winconsoleio.c b/Modules/_io/winconsoleio.c
index d51df7e..781518a 100644
--- a/Modules/_io/winconsoleio.c
+++ b/Modules/_io/winconsoleio.c
@@ -101,7 +101,7 @@ char _PyIO_get_console_type(PyObject *path_or_fd) {
DWORD length;
wchar_t name_buf[MAX_PATH], *pname_buf = name_buf;
-
+
length = GetFullPathNameW(decoded_wstr, MAX_PATH, pname_buf, NULL);
if (length > MAX_PATH) {
pname_buf = PyMem_New(wchar_t, length);
@@ -298,8 +298,7 @@ _io__WindowsConsoleIO___init___impl(winconsoleio *self, PyObject *nameobj,
self->fd = fd;
if (fd < 0) {
- PyObject *decodedname = Py_None;
- Py_INCREF(decodedname);
+ PyObject *decodedname;
int d = PyUnicode_FSDecoder(nameobj, (void*)&decodedname);
if (!d)