diff options
-rw-r--r-- | src/qml/compiler/qqmlcodegenerator.cpp | 1 | ||||
-rw-r--r-- | src/qml/qml/qqmltypeloader.cpp | 5 |
2 files changed, 6 insertions, 0 deletions
diff --git a/src/qml/compiler/qqmlcodegenerator.cpp b/src/qml/compiler/qqmlcodegenerator.cpp index 971d85e0ea..45373c6d11 100644 --- a/src/qml/compiler/qqmlcodegenerator.cpp +++ b/src/qml/compiler/qqmlcodegenerator.cpp @@ -1526,6 +1526,7 @@ static IR::Type resolveQmlType(QQmlEnginePrivate *qmlEngine, IR::MemberExpressio Q_ASSERT(tdata); Q_ASSERT(tdata->isComplete()); initMetaObjectResolver(resolver, qmlEngine->propertyCacheForType(tdata->compiledData()->metaTypeId)); + tdata->release(); resolver->flags |= AllPropertiesAreFinal; return resolver->resolveMember(qmlEngine, resolver, member); } else if (const QMetaObject *attachedMeta = type->attachedPropertiesType()) { diff --git a/src/qml/qml/qqmltypeloader.cpp b/src/qml/qml/qqmltypeloader.cpp index 258c5c71b3..5c48304b56 100644 --- a/src/qml/qml/qqmltypeloader.cpp +++ b/src/qml/qml/qqmltypeloader.cpp @@ -1966,12 +1966,17 @@ QQmlTypeData::QQmlTypeData(const QUrl &url, QQmlTypeLoader *manager) : QQmlTypeLoader::Blob(url, QmlFile, manager), m_typesResolved(false), m_compiledData(0), m_implicitImport(0), m_implicitImportLoaded(false) { + } QQmlTypeData::~QQmlTypeData() { for (int ii = 0; ii < m_scripts.count(); ++ii) m_scripts.at(ii).script->release(); + for (int ii = 0; ii < m_compositeSingletons.count(); ++ii) { + if (QQmlTypeData *tdata = m_compositeSingletons.at(ii).typeData) + tdata->release(); + } for (QHash<int, TypeReference>::ConstIterator it = m_resolvedTypes.constBegin(), end = m_resolvedTypes.constEnd(); it != end; ++it) { if (QQmlTypeData *tdata = it->typeData) |