From d3897306b07fab8490b32e8822685b54959be3e5 Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Tue, 7 Dec 2010 13:42:38 +0100 Subject: * python/generic.h: - set Object to NULL in CppDeallocPtr * python/depcache.cc: - don't run "actiongroup.release()" if the object was already deallocated --- debian/changelog | 10 ++++++++++ python/depcache.cc | 3 ++- python/generic.h | 4 +++- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 8c8613d1..1d59b94f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,13 @@ +python-apt (0.7.100.1) UNRELEASED; urgency=low + + * python/generic.h: + - set Object to NULL in CppDeallocPtr + * python/depcache.cc: + - don't run "actiongroup.release()" if the object was already + deallocated + + -- Michael Vogt Tue, 07 Dec 2010 13:41:07 +0100 + python-apt (0.7.100) unstable; urgency=low * Final 0.7.100 release; targeted at Squeeze. 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(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 *Obj = (CppPyObject *)iObj; - if (!((CppPyObject*)Obj)->NoDelete) + if (!((CppPyObject*)Obj)->NoDelete) { delete Obj->Object; + Obj->Object = NULL; + } CppClear(iObj); iObj->ob_type->tp_free(iObj); } -- cgit v1.2.3