aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2020-09-15 15:31:54 +0200
committerUlf Hermann <ulf.hermann@qt.io>2020-09-15 15:40:32 +0200
commit7dab889190b2289a7c4b48e732d7cb7838dbf297 (patch)
treed7c72c0ef211823578773079a7e731839c18229a
parent3ff11ceca37dcc4b6f0420332fa7f6aa007be7f3 (diff)
QQmlMetaType: Unregister metatype interfaces before deleting them
Otherwise the type may be retained in the aliases map. Change-Id: If6fbca53a417d76ad21548bea10f68401feb5c8c Reviewed-by: Lars Knoll <lars.knoll@qt.io>
-rw-r--r--src/qml/qml/qqmlmetatype.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/qml/qml/qqmlmetatype.cpp b/src/qml/qml/qqmlmetatype.cpp
index 06fdb0fab0..79ea83b6df 100644
--- a/src/qml/qml/qqmlmetatype.cpp
+++ b/src/qml/qml/qqmlmetatype.cpp
@@ -619,8 +619,12 @@ void QQmlMetaType::unregisterInternalCompositeType(const CompositeMetaTypeIds &t
{
QQmlMetaTypeDataPtr data;
data->qmlLists.remove(typeIds.listId.id());
- delete static_cast<QQmlMetaTypeInterface *>(QMetaType(typeIds.id).iface());
- delete static_cast<QQmlMetaTypeInterface *>(QMetaType(typeIds.listId).iface());
+ QMetaType metaType(typeIds.id);
+ QMetaType::unregisterMetaType(metaType);
+ QMetaType listMetaType(typeIds.listId);
+ QMetaType::unregisterMetaType(listMetaType);
+ delete static_cast<QQmlMetaTypeInterface *>(metaType.iface());
+ delete static_cast<QQmlMetaTypeInterface *>(listMetaType.iface());
}
int QQmlMetaType::registerUnitCacheHook(