forked from qt-creator/qt-creator
QmlDesigner: Fix crash when reparenting items into effected item
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>
This commit is contained in:
committed by
Tim Jenssen
parent
5fd12624a0
commit
824486dc34
@ -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)
|
||||
|
Reference in New Issue
Block a user