aboutsummaryrefslogtreecommitdiffstats
path: root/libshiboken
diff options
context:
space:
mode:
authorRenato Filho <renato.filho@openbossa.org>2011-06-28 17:14:19 -0300
committerHugo Parente Lima <hugo.pl@gmail.com>2012-03-08 16:15:27 -0300
commitc3eb8bb198b7cbc43236b1edbf7afbf096d8b8f6 (patch)
tree0a43a9c6c73ea7ee116d3df9ac74325ba8f2db26 /libshiboken
parent27c3af50e31bdafec37efe55fbcaccf3b1c49d02 (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.cpp17
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;