diff options
-rw-r--r-- | src/qml/jsruntime/qv4qobjectwrapper.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/qml/jsruntime/qv4qobjectwrapper.cpp b/src/qml/jsruntime/qv4qobjectwrapper.cpp index 67801f39b7..f611be2965 100644 --- a/src/qml/jsruntime/qv4qobjectwrapper.cpp +++ b/src/qml/jsruntime/qv4qobjectwrapper.cpp @@ -1008,7 +1008,10 @@ namespace { void QObjectWrapper::destroy(Managed *that) { QObjectWrapper *This = static_cast<QObjectWrapper*>(that); - QPointer<QObject> &object = This->m_object; + QPointer<QObject> object = This->m_object; + ExecutionEngine *engine = This->engine(); + This->~QObjectWrapper(); + This = 0; if (!object) return; @@ -1020,9 +1023,7 @@ void QObjectWrapper::destroy(Managed *that) return; QObjectDeleter *deleter = new QObjectDeleter(object); - This->engine()->memoryManager->registerDeletable(deleter); - - This->~QObjectWrapper(); + engine->memoryManager->registerDeletable(deleter); } |