public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Andreas Sturmlechner" <asturm@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: dev-qt/qtwidgets/files/, dev-qt/qtwidgets/
Date: Wed, 22 Mar 2023 18:45:58 +0000 (UTC)	[thread overview]
Message-ID: <1679510745.2c6246332f42f2c7ea5b95d48ad859b5d6a50eab.asturm@gentoo> (raw)

commit:     2c6246332f42f2c7ea5b95d48ad859b5d6a50eab
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Wed Mar 22 10:12:21 2023 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Wed Mar 22 18:45:45 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=2c624633

dev-qt/qtwidgets: Fix nullptr crash

KDE-bug: https://bugs.kde.org/show_bug.cgi?id=467373
QTBUG: https://bugreports.qt.io/browse/QTBUG-104917

Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>

 .../files/qtwidgets-5.15.8-QTBUG-104917.patch      | 54 +++++++++++++++++
 dev-qt/qtwidgets/qtwidgets-5.15.8-r4.ebuild        | 68 ++++++++++++++++++++++
 2 files changed, 122 insertions(+)

diff --git a/dev-qt/qtwidgets/files/qtwidgets-5.15.8-QTBUG-104917.patch b/dev-qt/qtwidgets/files/qtwidgets-5.15.8-QTBUG-104917.patch
new file mode 100644
index 000000000000..fae665b14d2e
--- /dev/null
+++ b/dev-qt/qtwidgets/files/qtwidgets-5.15.8-QTBUG-104917.patch
@@ -0,0 +1,54 @@
+From 38c54b3ff58972fa16810740fc43933620b6dc0d Mon Sep 17 00:00:00 2001
+From: Axel Spoerl <axel.spoerl@qt.io>
+Date: Wed, 27 Jul 2022 15:17:03 +0200
+Subject: [PATCH] Add nullptr guard in
+ QStyleSheetStyle::drawPrimitive(PE_PanelLineEdit)
+
+Drawing PE_PanelLineEdit in QStyleSheetStyle with the default argument
+widget = nullptr causes a segfault.
+
+drawPrimitive tries to fall back to a container widget's render rule
+and therefore calls containerWidget() - which crashes when called with
+nullptr.
+
+Container widget fallback is pointless when drawPrimitive() is called
+with widget == nullptr. This patch skips it in that case.
+
+Fixes: QTBUG-104917
+Pick-to: 6.4 6.3 6.2
+Change-Id: I09e57dccfebb81a308944c233846d5b9ef58819e
+Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
+(cherry picked from commit effc8be3ce848770a093d51d5651908c375e83f8)
+---
+ src/widgets/styles/qstylesheetstyle.cpp | 15 +++++++++------
+ 1 file changed, 9 insertions(+), 6 deletions(-)
+
+diff --git a/src/widgets/styles/qstylesheetstyle.cpp b/src/widgets/styles/qstylesheetstyle.cpp
+index 9fcb8ba522..50fdee0f69 100644
+--- a/src/widgets/styles/qstylesheetstyle.cpp
++++ b/src/widgets/styles/qstylesheetstyle.cpp
+@@ -4449,12 +4449,15 @@ void QStyleSheetStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *op
+ 
+     case PE_PanelLineEdit:
+         if (const QStyleOptionFrame *frm = qstyleoption_cast<const QStyleOptionFrame *>(opt)) {
+-            QWidget *container = containerWidget(w);
+-            if (container != w) {
+-                QRenderRule containerRule = renderRule(container, opt);
+-                if (!containerRule.hasNativeBorder() || !containerRule.baseStyleCanDraw())
+-                    return;
+-                rule = containerRule;
++            // Fall back to container widget's render rule
++            if (w) {
++                QWidget *container = containerWidget(w);
++                if (container != w) {
++                    QRenderRule containerRule = renderRule(container, opt);
++                    if (!containerRule.hasNativeBorder() || !containerRule.baseStyleCanDraw())
++                        return;
++                    rule = containerRule;
++                }
+             }
+ 
+             if (rule.hasNativeBorder()) {
+-- 
+2.40.0
+

diff --git a/dev-qt/qtwidgets/qtwidgets-5.15.8-r4.ebuild b/dev-qt/qtwidgets/qtwidgets-5.15.8-r4.ebuild
new file mode 100644
index 000000000000..45c06643f187
--- /dev/null
+++ b/dev-qt/qtwidgets/qtwidgets-5.15.8-r4.ebuild
@@ -0,0 +1,68 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+if [[ ${PV} != *9999* ]]; then
+	QT5_KDEPATCHSET_REV=5
+	KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
+fi
+
+QT5_MODULE="qtbase"
+inherit qt5-build
+
+DESCRIPTION="Set of components for creating classic desktop-style UIs for the Qt5 framework"
+
+# keep IUSE defaults in sync with qtgui
+IUSE="dbus gles2-only gtk +png +X"
+REQUIRED_USE="gtk? ( dbus )"
+
+DEPEND="
+	=dev-qt/qtcore-${QT5_PV}*:5=
+	=dev-qt/qtgui-${QT5_PV}*:5=[gles2-only=,png=,X?]
+	dbus? ( =dev-qt/qtdbus-${QT5_PV}* )
+	gtk? (
+		dev-libs/glib:2
+		=dev-qt/qtgui-${QT5_PV}*:5=[dbus]
+		x11-libs/gtk+:3
+		x11-libs/libX11
+		x11-libs/pango
+	)
+"
+RDEPEND="${DEPEND}"
+
+QT5_TARGET_SUBDIRS=(
+	src/tools/uic
+	src/widgets
+	src/plugins/platformthemes
+)
+
+QT5_GENTOO_CONFIG=(
+	dbus:xdgdesktopportal:
+	gtk:gtk3:
+	::widgets
+	!:no-widgets:
+)
+
+QT5_GENTOO_PRIVATE_CONFIG=(
+	:widgets
+)
+
+PATCHES=(
+	"${FILESDIR}/${P}-QTBUG-106569.patch"
+	"${FILESDIR}/${P}-QTBUG-104917.patch" # KDE-bug 467373
+)
+
+src_configure() {
+	local myconf=(
+		-opengl $(usex gles2-only es2 desktop)
+		$(usev dbus -dbus-linked)
+		$(qt_use gtk)
+		-gui
+		$(qt_use png libpng system)
+		-widgets
+		$(qt_use X xcb)
+		$(usev X '-xcb-xlib -xkbcommon')
+	)
+	qt5-build_src_configure
+}


             reply	other threads:[~2023-03-22 18:46 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-22 18:45 Andreas Sturmlechner [this message]
  -- strict thread matches above, loose matches on Subject: below --
2019-07-21 16:13 [gentoo-commits] repo/gentoo:master commit in: dev-qt/qtwidgets/files/, dev-qt/qtwidgets/ Andreas Sturmlechner
2019-07-16 11:00 Andreas Sturmlechner
2015-11-27 23:18 Davide Pesavento

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1679510745.2c6246332f42f2c7ea5b95d48ad859b5d6a50eab.asturm@gentoo \
    --to=asturm@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox