diff options
author | Renato Filho <renato.filho@openbossa.org> | 2011-06-28 17:14:19 -0300 |
---|---|---|
committer | Hugo Parente Lima <hugo.pl@gmail.com> | 2012-03-08 16:15:27 -0300 |
commit | c3eb8bb198b7cbc43236b1edbf7afbf096d8b8f6 (patch) | |
tree | 0a43a9c6c73ea7ee116d3df9ac74325ba8f2db26 /libshiboken | |
parent | 27c3af50e31bdafec37efe55fbcaccf3b1c49d02 (diff) |
Fix object wrapper deletion.
Fixes bug #356.
Reviewer: Luciano Wolf <luciano.wolf@openbossa.org>
Renato Araújo <renato.filho@openbossa.org>
Diffstat (limited to 'libshiboken')
-rw-r--r-- | libshiboken/basewrapper.cpp | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/libshiboken/basewrapper.cpp b/libshiboken/basewrapper.cpp index 4c61c4a79..79bd9bd5e 100644 --- a/libshiboken/basewrapper.cpp +++ b/libshiboken/basewrapper.cpp @@ -211,14 +211,16 @@ void SbkObjectTypeDealloc(PyObject* pyObj) PyObject_GC_UnTrack(pyObj); Py_TRASHCAN_SAFE_BEGIN(pyObj); - if(sbkType->d->user_data && sbkType->d->d_func) { - sbkType->d->d_func(sbkType->d->user_data); - sbkType->d->user_data = 0; + if (sbkType->d) { + if(sbkType->d->user_data && sbkType->d->d_func) { + sbkType->d->d_func(sbkType->d->user_data); + sbkType->d->user_data = 0; + } + free(sbkType->d->original_name); + sbkType->d->original_name = 0; + delete sbkType->d; + sbkType->d = 0; } - free(sbkType->d->original_name); - sbkType->d->original_name = 0; - delete sbkType->d; - sbkType->d = 0; Py_TRASHCAN_SAFE_END(pyObj); } @@ -249,7 +251,6 @@ PyObject* SbkObjectTypeTpNew(PyTypeObject* metatype, PyObject* args, PyObject* k // The meta type creates a new type when the Python programmer extends a wrapped C++ class. SbkObjectType* newType = reinterpret_cast<SbkObjectType*>(PyType_Type.tp_new(metatype, args, kwds)); - if (!newType) return 0; |