From: Victor Stinner Date: Wed, 25 Mar 2015 01:25:25 +0000 (+0100) Subject: Issue #23571: If io.TextIOWrapper constructor fails in _Py_DisplaySourceLine(), X-Git-Tag: v3.5.0a3~50^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=81f241ab2e19db9e421a300c00f9fb1c4e0003df;p=thirdparty%2FPython%2Fcpython.git Issue #23571: If io.TextIOWrapper constructor fails in _Py_DisplaySourceLine(), close the binary file to fix a resource warning. --- diff --git a/Python/traceback.c b/Python/traceback.c index c2aba522bf6c..2bea29e44a2a 100644 --- a/Python/traceback.c +++ b/Python/traceback.c @@ -309,13 +309,20 @@ _Py_DisplaySourceLine(PyObject *f, PyObject *filename, int lineno, int indent) } fob = _PyObject_CallMethodId(io, &PyId_TextIOWrapper, "Os", binary, encoding); Py_DECREF(io); - Py_DECREF(binary); PyMem_FREE(found_encoding); if (fob == NULL) { PyErr_Clear(); + + res = _PyObject_CallMethodId(binary, &PyId_close, ""); + Py_DECREF(binary); + if (res) + Py_DECREF(res); + else + PyErr_Clear(); return 0; } + Py_DECREF(binary); /* get the line number lineno */ for (i = 0; i < lineno; i++) {