diff options
author | Renato Filho <renato.filho@openbossa.org> | 2011-03-22 10:40:15 -0300 |
---|---|---|
committer | Hugo Parente Lima <hugo.pl@gmail.com> | 2012-03-08 16:15:18 -0300 |
commit | 17546cd6200fd45d57e8b07b77f2f99ade36776b (patch) | |
tree | ee715a7abeb15e92cd0bf533ed7a27f04c61dbd3 /libshiboken | |
parent | 0a34ce608e76a96c5bf9fbf8b363aaa0256e9396 (diff) |
Fixed parentInfo cleanup.
Fixes bug #735.
Reviewer: Marcelo Lira <marcelo.lira@openbossa.org>
Luciano Wolf <luciano.wolf@openbossa.org>
Diffstat (limited to 'libshiboken')
-rw-r--r-- | libshiboken/basewrapper.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/libshiboken/basewrapper.cpp b/libshiboken/basewrapper.cpp index d07e876ed..b4a981818 100644 --- a/libshiboken/basewrapper.cpp +++ b/libshiboken/basewrapper.cpp @@ -635,8 +635,6 @@ static void _destroyParentInfo(SbkObject* obj, bool keepReference) removeParent(first, false, keepReference); } removeParent(obj, false); - delete pInfo; - obj->d->parentInfo = 0; } } @@ -927,6 +925,12 @@ void removeParent(SbkObject* child, bool giveOwnershipBack, bool keepReference) // Transfer ownership back to Python child->d->hasOwnership = giveOwnershipBack; + if (pInfo->children.empty()) { + // Erase parentInfo data + delete pInfo; + child->d->parentInfo = 0; + } + // Remove parent ref Py_CLEAR(child); } @@ -1033,7 +1037,6 @@ void* getTypeUserData(SbkObject* wrapper) void keepReference(SbkObject* self, const char* key, PyObject* referredObject, bool append) { - bool isNone = (!referredObject || (referredObject == Py_None)); if (!self->d->referredObjects) |