From 1a86f8153a3b23901d5511d43d9838b4b5c46495 Mon Sep 17 00:00:00 2001 From: Andreas Sturmlechner Date: Sun, 4 Apr 2021 13:37:08 +0200 Subject: kde-frameworks/kirigami: Fix systemsettings crash installing themes Upstream commit 29dabab2f536827bc1ecec63f5a0b0a76f0809e5 See also: https://invent.kde.org/frameworks/kirigami/-/merge_requests/253 KDE-bug: https://bugs.kde.org/show_bug.cgi?id=434079 Package-Manager: Portage-3.0.18, Repoman-3.0.3 Signed-off-by: Andreas Sturmlechner --- .../kirigami-5.80.0-fix-crash-in-SizeGroup.patch | 41 ++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 kde-frameworks/kirigami/files/kirigami-5.80.0-fix-crash-in-SizeGroup.patch (limited to 'kde-frameworks/kirigami/files/kirigami-5.80.0-fix-crash-in-SizeGroup.patch') diff --git a/kde-frameworks/kirigami/files/kirigami-5.80.0-fix-crash-in-SizeGroup.patch b/kde-frameworks/kirigami/files/kirigami-5.80.0-fix-crash-in-SizeGroup.patch new file mode 100644 index 000000000000..7d13d2fa1bfa --- /dev/null +++ b/kde-frameworks/kirigami/files/kirigami-5.80.0-fix-crash-in-SizeGroup.patch @@ -0,0 +1,41 @@ +From 29dabab2f536827bc1ecec63f5a0b0a76f0809e5 Mon Sep 17 00:00:00 2001 +From: David Edmundson +Date: Tue, 9 Mar 2021 14:30:44 +0000 +Subject: [PATCH] Fix potential crash in SizeGroup + +SizeGroup keeps a cache of a list of items, and when one updates does +calculations based on all items. + +This list is stored as a list of QPointers as we don't explicitly track +deletion. + +We have a list of items and guard for deletion, but they're QML owned. +So there's a point in time when it's pending deletion with the garbage +collector but the lower level object isn't managed by an engine. + +As we go via QQmlProperty(item, QStringLiteral("Layout.preferredWidth"), +qmlContext(item)).write(maxWidth) this is problematic. + +BUG: 434079 +--- + src/sizegroup.cpp | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/sizegroup.cpp b/src/sizegroup.cpp +index 2035b6eb..a9a0ebf8 100644 +--- a/src/sizegroup.cpp ++++ b/src/sizegroup.cpp +@@ -98,6 +98,10 @@ void SizeGroup::adjustItems(Mode whatChanged) + continue; + } + ++ if (!qmlEngine(item)) { ++ continue; ++ } ++ + switch (m_mode) { + case Mode::Width: + QQmlProperty(item, QStringLiteral("Layout.preferredWidth"), qmlContext(item)).write(maxWidth); +-- +GitLab + -- cgit v1.2.3