diff options
| author | Julian Andres Klode <jak@debian.org> | 2009-07-12 13:04:49 +0200 |
|---|---|---|
| committer | Julian Andres Klode <jak@debian.org> | 2009-07-12 13:04:49 +0200 |
| commit | 4eb6bf32792b37d97f7d0d50bf2669b04fa77583 (patch) | |
| tree | 999d45b9df98cf68871704d3f513e39b139d91d7 /python | |
| parent | ebdbc02bfd5d43246bf837527dd659a435b8bfde (diff) | |
| download | python-apt-4eb6bf32792b37d97f7d0d50bf2669b04fa77583.tar.gz | |
python/sourcelist.cc: Fix deletion of MetaIndex objects returned in SourceList.list.
First of all, make the objects mortal by decreasing their refcount after
adding them to the list. Secondly, make the objects owned by SourceList
and thirdly, set NoDelete on them, because they are managed by SourceList.
Diffstat (limited to 'python')
| -rw-r--r-- | python/sourcelist.cc | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/python/sourcelist.cc b/python/sourcelist.cc index 0820d5bf..aceb19ad 100644 --- a/python/sourcelist.cc +++ b/python/sourcelist.cc @@ -90,9 +90,12 @@ static PyObject *PkgSourceListGetList(PyObject *Self,void*) for (vector<metaIndex *>::const_iterator I = list->begin(); I != list->end(); I++) { - PyObject *Obj; - Obj = CppPyObject_NEW<metaIndex*>(&MetaIndexType,*I); + CppOwnedPyObject<metaIndex*> *Obj; + Obj = CppOwnedPyObject_NEW<metaIndex*>(Self, &MetaIndexType,*I); + // Never delete metaIndex*, they are managed by the pkgSourceList. + Obj->NoDelete = true; PyList_Append(List,Obj); + Py_DECREF(Obj); } return List; } |
