From 8cc4a0483ff2a6a003043f86938e3bda65b2e306 Mon Sep 17 00:00:00 2001 From: Hugo Parente Lima Date: Thu, 23 Dec 2010 15:50:54 -0200 Subject: Fix bug#554 - "Inner classes don't work and give us a segfault" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewer: Marcelo Lira Renato Araújo --- libshiboken/basewrapper.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'libshiboken') diff --git a/libshiboken/basewrapper.cpp b/libshiboken/basewrapper.cpp index 9f72f4a3f..65de6e866 100644 --- a/libshiboken/basewrapper.cpp +++ b/libshiboken/basewrapper.cpp @@ -187,7 +187,7 @@ void SbkDeallocWrapperWithPrivateDtor(PyObject* self) void SbkObjectTypeDealloc(PyObject* pyObj) { - SbkObjectType* sbkType = reinterpret_cast(pyObj->ob_type); + SbkObjectType* sbkType = reinterpret_cast(pyObj); if (!sbkType->d) return; @@ -209,8 +209,8 @@ PyObject* SbkObjectTypeTpNew(PyTypeObject* metatype, PyObject* args, PyObject* k if (!newType) return 0; - SbkObjectTypePrivate* d = new SbkObjectTypePrivate; - memset(d, 0, sizeof(SbkObjectTypePrivate)); + Shiboken::ObjectType::initPrivateData(newType); + SbkObjectTypePrivate* d = newType->d; std::list bases = Shiboken::getCppBaseClasses(reinterpret_cast(newType)); if (bases.size() == 1) { @@ -240,7 +240,6 @@ PyObject* SbkObjectTypeTpNew(PyTypeObject* metatype, PyObject* args, PyObject* k d->user_data = 0; d->d_func = 0; d->is_user_type = 1; - newType->d = d; std::list::const_iterator it = bases.begin(); for (; it != bases.end(); ++it) { -- cgit v1.2.3