diff --git a/python/header-py.c b/python/header-py.c index 0416058..539db0d 100644 --- a/python/header-py.c +++ b/python/header-py.c @@ -139,7 +139,9 @@ static PyObject * hdrKeyList(hdrObject * s) rpmTag tag; while ((tag = headerNextTag(hi)) != RPMTAG_NOT_FOUND) { - PyList_Append(keys, PyInt_FromLong(tag)); + PyObject *to = PyInt_FromLong(tag); + PyList_Append(keys, to); + Py_DECREF(to); } headerFreeIterator(hi); diff --git a/python/rpmtd-py.c b/python/rpmtd-py.c index eef35fe..1ba3a3d 100644 --- a/python/rpmtd-py.c +++ b/python/rpmtd-py.c @@ -46,7 +46,9 @@ PyObject *rpmtd_AsPyobj(rpmtd td) if (array) { res = PyList_New(0); while (rpmtdNext(td) >= 0) { - PyList_Append(res, rpmtd_ItemAsPyobj(td, class)); + PyObject *item = rpmtd_ItemAsPyobj(td, class); + PyList_Append(res, item); + Py_DECREF(item); } } else { res = rpmtd_ItemAsPyobj(td, class); diff --git a/python/rpmts-py.c b/python/rpmts-py.c index f774818..745b526 100644 --- a/python/rpmts-py.c +++ b/python/rpmts-py.c @@ -351,6 +351,7 @@ rpmts_HdrFromFdno(rpmtsObject * s, PyObject *arg) if (rpmrc == RPMRC_OK) { ho = hdr_Wrap(&hdr_Type, h); + h = headerFree(h); /* ref held by python object */ } else { Py_INCREF(Py_None); ho = Py_None; @@ -518,6 +519,7 @@ rpmts_Problems(rpmtsObject * s) while (rpmpsNextIterator(psi) >= 0) { PyObject *prob = rpmprob_Wrap(&rpmProblem_Type, rpmpsGetProblem(psi)); PyList_Append(problems, prob); + Py_DECREF(prob); } rpmpsFreeIterator(psi); rpmpsFree(ps); diff --git a/python/spec-py.c b/python/spec-py.c index e162bb3..f5a4b33 100644 --- a/python/spec-py.c +++ b/python/spec-py.c @@ -177,6 +177,7 @@ static PyObject * spec_get_sources(specObject *s, void *closure) PyObject *srcUrl = Py_BuildValue("(sii)", source->fullSource, source->num, source->flags); PyList_Append(sourceList, srcUrl); + Py_DECREF(srcUrl); } return sourceList; @@ -192,6 +193,7 @@ static PyObject * spec_get_packages(specObject *s, void *closure) for (pkg = spec->packages; pkg; pkg = pkg->next) { PyObject *po = specPkg_Wrap(&specPkg_Type, pkg); PyList_Append(pkgList, po); + Py_DECREF(po); } return pkgList; }