aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2021-11-30 15:30:55 +0100
committerUlf Hermann <ulf.hermann@qt.io>2021-11-30 19:42:54 +0100
commit0118a2d6b6347a444fef2b80a170caa606b669d2 (patch)
tree9715f3635a42ef4014c457187e29790d34f679e7
parent813fb3ad45001e64607064db3f5c358f88ea336d (diff)
QQuickItemViewTransitionAttached: Avoid dangling pointers
The items referred to here can be deleted when the animation finishes. Use QPointer to zero them in that case. Pick-to: 5.15 6.2 Fixes: QTBUG-84196 Change-Id: I695c9e91bd29d0583e4871d03ee946c40aa8a595 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
-rw-r--r--src/quick/items/qquickitemviewtransition.cpp2
-rw-r--r--src/quick/items/qquickitemviewtransition_p.h2
-rw-r--r--tests/auto/quickcontrols2/translation/data/stackView.qml6
3 files changed, 8 insertions, 2 deletions
diff --git a/src/quick/items/qquickitemviewtransition.cpp b/src/quick/items/qquickitemviewtransition.cpp
index eb0c1483ac..3c84468370 100644
--- a/src/quick/items/qquickitemviewtransition.cpp
+++ b/src/quick/items/qquickitemviewtransition.cpp
@@ -585,7 +585,7 @@ void QQuickItemViewTransitionableItem::stopTransition()
QQuickViewTransitionAttached::QQuickViewTransitionAttached(QObject *parent)
- : QObject(parent), m_item(nullptr), m_index(-1)
+ : QObject(parent), m_index(-1)
{
}
/*!
diff --git a/src/quick/items/qquickitemviewtransition_p.h b/src/quick/items/qquickitemviewtransition_p.h
index a1f02b79db..253f3c6c70 100644
--- a/src/quick/items/qquickitemviewtransition_p.h
+++ b/src/quick/items/qquickitemviewtransition_p.h
@@ -226,7 +226,7 @@ private:
QList<int> m_targetIndexes;
QList<QObject *> m_targetItems;
- QQuickItem *m_item;
+ QPointer<QQuickItem> m_item;
int m_index;
};
diff --git a/tests/auto/quickcontrols2/translation/data/stackView.qml b/tests/auto/quickcontrols2/translation/data/stackView.qml
index 851b6e8017..55748d219a 100644
--- a/tests/auto/quickcontrols2/translation/data/stackView.qml
+++ b/tests/auto/quickcontrols2/translation/data/stackView.qml
@@ -83,6 +83,12 @@ Window {
property int count: 0
onTriggered: {
+
+ // This triggers the crash without retranslate().
+ // retranslate() got cleverer in 6.2, sidestepping the issue.
+ replaceExit.animations[0].target = null;
+ replaceExit.animations[0].target = replaceExit.ViewTransition.item
+
console.log("timer within", root, "is about to call retranslate")
window.engine.retranslate()
window.calledTranslate()