From: Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> Date: Mon, 23 Jul 2018 21:45:26 +0000 (-0700) Subject: bpo-34190: Fix reference leak in call_function() (GH-8413) (GH-8418) X-Git-Tag: v3.7.1rc1~248 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=25b87d35675301a929982db6d37836666af4f715;p=thirdparty%2FPython%2Fcpython.git bpo-34190: Fix reference leak in call_function() (GH-8413) (GH-8418) (cherry picked from commit 147d95511f59cfdd2d522f9d736f2335457bae20) Co-authored-by: jdemeyer --- diff --git a/Python/ceval.c b/Python/ceval.c index 600147b7aaf2..0d1519bef4f0 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -4565,12 +4565,15 @@ call_function(PyObject ***pp_stack, Py_ssize_t oparg, PyObject *kwnames) profiling. */ PyObject *self = stack[0]; func = Py_TYPE(func)->tp_descr_get(func, self, (PyObject*)Py_TYPE(self)); - if (func == NULL) { - return NULL; + if (func != NULL) { + C_TRACE(x, _PyCFunction_FastCallKeywords(func, + stack+1, nargs-1, + kwnames)); + Py_DECREF(func); + } + else { + x = NULL; } - C_TRACE(x, _PyCFunction_FastCallKeywords(func, stack+1, nargs-1, - kwnames)); - Py_DECREF(func); } else { x = _PyMethodDescr_FastCallKeywords(func, stack, nargs, kwnames);