aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@qt.io>2024-02-16 14:43:10 +0200
committerTim Jenssen <tim.jenssen@qt.io>2024-02-16 15:41:39 +0000
commit824486dc34e2dfb72b17808a6496d8c026fe7f23 (patch)
treea0ddc54afce6d6cf683e238598d36634039c9a9c
parent5fd12624a0fb0a08dd2c93013a2c1c94995d7079 (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.cpp8
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 e66a55e82f..5cc8a71589 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)