aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2021-08-25 09:54:55 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2021-08-30 07:18:49 +0000
commitd52299b71810509640d0324b8fe21c25d91f37d6 (patch)
tree3294105eba3109413d4b622593fbd7e8a610ae53
parent66d5e8003e1a91c481d45aa3ab1ef269a98ef52b (diff)
Protect unregisterInternalCompositeType() against null metatype data
This may be called on shutdown when the data is already gone. Fixes: QDS-4390 Change-Id: I89de5fc1e66fca4318939179ed356620110b08e9 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Andrei Golubev <andrei.golubev@qt.io> Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io> (cherry picked from commit 98af4ab983b9b33c6f5cdb71f6f4f4dd7419aa30) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--src/qml/qml/qqmlmetatype.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/qml/qml/qqmlmetatype.cpp b/src/qml/qml/qqmlmetatype.cpp
index 8b92a2ff8c..a8cd22e353 100644
--- a/src/qml/qml/qqmlmetatype.cpp
+++ b/src/qml/qml/qqmlmetatype.cpp
@@ -588,12 +588,14 @@ void QQmlMetaType::unregisterInternalCompositeType(const CompositeMetaTypeIds &t
QMetaType metaType(typeIds.id);
QMetaType listMetaType(typeIds.listId);
+ // This may be called from delayed dtors on shutdown when the data is already gone.
QQmlMetaTypeDataPtr data;
-
- if (QQmlValueType *vt = data->metaTypeToValueType.take(metaType.id()))
- delete vt;
- if (QQmlValueType *vt = data->metaTypeToValueType.take(listMetaType.id()))
- delete vt;
+ if (data.isValid()) {
+ if (QQmlValueType *vt = data->metaTypeToValueType.take(metaType.id()))
+ delete vt;
+ if (QQmlValueType *vt = data->metaTypeToValueType.take(listMetaType.id()))
+ delete vt;
+ }
QMetaType::unregisterMetaType(metaType);
QMetaType::unregisterMetaType(listMetaType);