From: Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> Date: Fri, 8 Sep 2017 21:26:27 +0000 (-0700) Subject: [3.6] Fixes reference leak (GH-3457) (#3460) X-Git-Tag: v3.6.3rc1~56 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ef18b0dab94b00ee233d672d89776539ef236207;p=thirdparty%2FPython%2Fcpython.git [3.6] Fixes reference leak (GH-3457) (#3460) (cherry picked from commit af8d6b90723daa943c5cd0a38ee7564790d8687a) --- diff --git a/PC/_findvs.cpp b/PC/_findvs.cpp index 6c6601159638..dd7c1fcb7236 100644 --- a/PC/_findvs.cpp +++ b/PC/_findvs.cpp @@ -161,18 +161,26 @@ static PyObject *find_all_instances() PyObject *version = nullptr; PyObject *path = nullptr; PyObject *packages = nullptr; + PyObject *tuple = nullptr; if (FAILED(hr = inst->QueryInterface(&inst2)) || !(name = get_install_name(inst2)) || !(version = get_install_version(inst)) || !(path = get_install_path(inst)) || !(packages = get_installed_packages(inst2)) || - PyList_Append(res, PyTuple_Pack(4, name, version, path, packages)) < 0) + !(tuple = PyTuple_Pack(4, name, version, path, packages)) || + PyList_Append(res, tuple) < 0) goto iter_error; + Py_DECREF(tuple); + Py_DECREF(packages); + Py_DECREF(path); + Py_DECREF(version); + Py_DECREF(name); continue; iter_error: if (inst2) inst2->Release(); + Py_XDECREF(tuple); Py_XDECREF(packages); Py_XDECREF(path); Py_XDECREF(version);