diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2020-09-15 15:31:54 +0200 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2020-09-15 15:40:32 +0200 |
commit | 7dab889190b2289a7c4b48e732d7cb7838dbf297 (patch) | |
tree | d7c72c0ef211823578773079a7e731839c18229a | |
parent | 3ff11ceca37dcc4b6f0420332fa7f6aa007be7f3 (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.cpp | 8 |
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( |