From 59807943af5c10c892b239f11b8fafb209254a4a Mon Sep 17 00:00:00 2001 From: David Malcolm Date: Thu, 15 Dec 2011 22:22:56 -0500 Subject: fix memory leaks in invocations of PyObject_Call - Various functions in the Python bindings have expressions of the form: PyObject_Call(callable, Py_BuildValue(fmtstring, ...), NULL); This leaks memory for the case when Py_BuildValue succeeds (it returns a new reference, which is never freed; PyObject_Call doesn't steal the reference): the argument tuple and all of its components will not be freed (until the process exits). Signed-off-by: Ales Kozumplik --- python/rpmfd-py.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'python/rpmfd-py.c') diff --git a/python/rpmfd-py.c b/python/rpmfd-py.c index 89a70cd0e..1150aa1b2 100644 --- a/python/rpmfd-py.c +++ b/python/rpmfd-py.c @@ -23,8 +23,8 @@ int rpmfdFromPyObject(PyObject *obj, rpmfdObject **fdop) Py_INCREF(obj); fdo = (rpmfdObject *) obj; } else { - fdo = (rpmfdObject *) PyObject_Call((PyObject *)&rpmfd_Type, - Py_BuildValue("(O)", obj), NULL); + fdo = (rpmfdObject *) PyObject_CallFunctionObjArgs((PyObject *)&rpmfd_Type, + obj, NULL); } if (fdo == NULL) return 0; -- cgit v1.2.3