diff options
author | Miikka Heikkinen <miikka.heikkinen@qt.io> | 2024-02-16 14:43:10 +0200 |
---|---|---|
committer | Tim Jenssen <tim.jenssen@qt.io> | 2024-02-16 15:41:39 +0000 |
commit | 824486dc34e2dfb72b17808a6496d8c026fe7f23 (patch) | |
tree | a0ddc54afce6d6cf683e238598d36634039c9a9c | |
parent | 5fd12624a0fb0a08dd2c93013a2c1c94995d7079 (diff) |
QmlDesigner: Fix crash when reparenting items into effected itemqds/v4.4.0qds/4.4
Some effect related objects such as QQuickShaderEffectSource can be
silently removed alongside another object, so use QPointer to ensure
all objects are still valid before readding them.
Fixes: QDS-11973
Change-Id: I75ee2dc81e27774f8be87b031e149b135ec84023
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
-rw-r--r-- | src/tools/qml2puppet/qml2puppet/instances/objectnodeinstance.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/tools/qml2puppet/qml2puppet/instances/objectnodeinstance.cpp b/src/tools/qml2puppet/qml2puppet/instances/objectnodeinstance.cpp index e66a55e82f2..5cc8a715893 100644 --- a/src/tools/qml2puppet/qml2puppet/instances/objectnodeinstance.cpp +++ b/src/tools/qml2puppet/qml2puppet/instances/objectnodeinstance.cpp @@ -291,7 +291,7 @@ static void removeObjectFromList(const QQmlProperty &property, int count = listReference.count(); - QObjectList objectList; + QList<QPointer<QObject>> objectList; for (int i = 0; i < count; i ++) { QObject *listItem = listReference.at(i); @@ -301,8 +301,10 @@ static void removeObjectFromList(const QQmlProperty &property, listReference.clear(); - for (QObject *object : std::as_const(objectList)) - listReference.append(object); + for (QObject *object : std::as_const(objectList)) { + if (object) + listReference.append(object); + } } void ObjectNodeInstance::removeFromOldProperty(QObject *object, QObject *oldParent, const PropertyName &oldParentProperty) |