diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2017-06-08 16:19:25 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-06-08 16:19:25 (GMT) |
commit | 29adc13bd797d9c9e7fcb893a7c49ce7f7ad388c (patch) | |
tree | 4d791ba4920af78257ff90789c4f885f2d22285f | |
parent | d52aa31378ae43e044a300edfe8285954c167216 (diff) | |
download | cpython-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.c | 5 |
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) |