From 55c0296417d146c999d0b2ba067c6e488bc6f416 Mon Sep 17 00:00:00 2001 From: Hugo Parente Lima Date: Thu, 24 Mar 2011 17:20:42 -0300 Subject: Don't return a overload method if the object is dieing. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewer: Renato Araújo Luciano Wolf --- libshiboken/bindingmanager.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'libshiboken') diff --git a/libshiboken/bindingmanager.cpp b/libshiboken/bindingmanager.cpp index ba9f77eb3..07c9336b8 100644 --- a/libshiboken/bindingmanager.cpp +++ b/libshiboken/bindingmanager.cpp @@ -216,7 +216,9 @@ SbkObject* BindingManager::retrieveWrapper(const void* cptr) PyObject* BindingManager::getOverride(const void* cptr, const char* methodName) { SbkObject* wrapper = retrieveWrapper(cptr); - if (!wrapper) + // The refcount can be 0 if the object is dieing and someone called + // a virtual method from the destructor + if (!wrapper || ((PyObject*)wrapper)->ob_refcnt == 0) return 0; if (wrapper->ob_dict) { -- cgit v1.2.3