summaryrefslogtreecommitdiff
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
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.
-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;
}