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 --- python/depcache.cc | 3 ++- python/generic.h | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) (limited to 'python') 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