summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorMichael Vogt <michael.vogt@ubuntu.com>2010-12-07 13:42:38 +0100
committerMichael Vogt <michael.vogt@ubuntu.com>2010-12-07 13:42:38 +0100
commitd3897306b07fab8490b32e8822685b54959be3e5 (patch)
tree7c36a902fe7336099e43c8c8fe6e9abd09eabeac /python
parentf93c69c24378aaed08c401b4303b60a6c2eb8260 (diff)
downloadpython-apt-d3897306b07fab8490b32e8822685b54959be3e5.tar.gz
* python/generic.h:
- set Object to NULL in CppDeallocPtr * python/depcache.cc: - don't run "actiongroup.release()" if the object was already deallocated
Diffstat (limited to 'python')
-rw-r--r--python/depcache.cc3
-rw-r--r--python/generic.h4
2 files changed, 5 insertions, 2 deletions
diff --git a/python/depcache.cc b/python/depcache.cc
index b7294644..014ad7ae 100644
--- a/python/depcache.cc
+++ b/python/depcache.cc
@@ -997,7 +997,8 @@ static const char *actiongroup__exit__doc =
"Same as release(), but for use as a context manager.";
static PyObject *PkgActionGroupExit(PyObject *Self,PyObject *Args) {
pkgDepCache::ActionGroup *ag = GetCpp<pkgDepCache::ActionGroup*>(Self);
- ag->release();
+ if (ag != NULL)
+ ag->release();
Py_RETURN_FALSE;
}
diff --git a/python/generic.h b/python/generic.h
index 31c1bc2d..7abf7e7a 100644
--- a/python/generic.h
+++ b/python/generic.h
@@ -202,8 +202,10 @@ void CppDeallocPtr(PyObject *iObj)
std::cerr << "=== DEALLOCATING " << iObj->ob_type->tp_name << "*+ ===\n";
#endif
CppPyObject<T> *Obj = (CppPyObject<T> *)iObj;
- if (!((CppPyObject<T>*)Obj)->NoDelete)
+ if (!((CppPyObject<T>*)Obj)->NoDelete) {
delete Obj->Object;
+ Obj->Object = NULL;
+ }
CppClear<T>(iObj);
iObj->ob_type->tp_free(iObj);
}