From c3eb8bb198b7cbc43236b1edbf7afbf096d8b8f6 Mon Sep 17 00:00:00 2001 From: Renato Filho Date: Tue, 28 Jun 2011 17:14:19 -0300 Subject: Fix object wrapper deletion. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes bug #356. Reviewer: Luciano Wolf Renato Araújo --- libshiboken/basewrapper.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'libshiboken') 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(PyType_Type.tp_new(metatype, args, kwds)); - if (!newType) return 0; -- cgit v1.2.3