summaryrefslogtreecommitdiff
path: root/python/metaindex.cc
diff options
context:
space:
mode:
authorJulian Andres Klode <jak@debian.org>2009-07-12 13:26:02 +0200
committerJulian Andres Klode <jak@debian.org>2009-07-12 13:26:02 +0200
commitc45715cf0269bcef053025f01a1956b75bf3c859 (patch)
treea9c1715827cfcc97ced4c04213b8a29fa47fdb82 /python/metaindex.cc
parent4eb6bf32792b37d97f7d0d50bf2669b04fa77583 (diff)
downloadpython-apt-c45715cf0269bcef053025f01a1956b75bf3c859.tar.gz
python/metaindex.cc: Fix deletion of the IndexFile objects in MetaIndex.index_files
First of all, make the objects mortal by decreasing their refcount after adding them to the list. Secondly, make the objects owned by MetaIndex and thirdly, set NoDelete on them, because they are managed by metaIndex.
Diffstat (limited to 'python/metaindex.cc')
-rw-r--r--python/metaindex.cc7
1 files changed, 5 insertions, 2 deletions
diff --git a/python/metaindex.cc b/python/metaindex.cc
index 87b1e59a..195394d6 100644
--- a/python/metaindex.cc
+++ b/python/metaindex.cc
@@ -37,9 +37,12 @@ static PyObject *MetaIndexGetIndexFiles(PyObject *Self,void*) {
for (vector<pkgIndexFile *>::const_iterator I = indexFiles->begin();
I != indexFiles->end(); I++)
{
- PyObject *Obj;
- Obj = CppPyObject_NEW<pkgIndexFile*>(&PackageIndexFileType,*I);
+ CppOwnedPyObject<pkgIndexFile*> *Obj;
+ Obj = CppOwnedPyObject_NEW<pkgIndexFile*>(Self, &PackageIndexFileType,*I);
+ // Do not delete pkgIndexFile*, they are managed by metaIndex.
+ Obj->NoDelete = true;
PyList_Append(List,Obj);
+ Py_DECREF(Obj);
}
return List;
}