From bcd29a9eab00c77bc402b9d4242f097d19c92044 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Mon, 3 Mar 2025 10:53:04 +0100 Subject: [PATCH] QWidget: init `data` in ctor, not Private::init() This should fix Coverity's hallucination that QWidget::data is used uninitialized, or, after 58b9250aea0b1b41c8cbd1033149371a93a5b2c1, dereferenced while it's still nullptr. Coverity-Id: 475552 Coverity-Id: 475551 Coverity-Id: 475550 Coverity-Id: 475549 Coverity-Id: 396828 Pick-to: 6.9 6.8 6.5 Change-Id: I49705b8bc44082fc68a59c2c98c4e37a6d841b19 Reviewed-by: Volker Hilsheimer --- src/widgets/kernel/qwidget.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp index 6ece5d03723..60408774772 100644 --- a/src/widgets/kernel/qwidget.cpp +++ b/src/widgets/kernel/qwidget.cpp @@ -852,6 +852,7 @@ QWidget::QWidget(QWidget *parent, Qt::WindowFlags f) */ QWidget::QWidget(QWidgetPrivate &dd, QWidget* parent, Qt::WindowFlags f) : QObject(dd, nullptr), QPaintDevice() + , data(&dd.data) { Q_D(QWidget); QT_TRY { @@ -935,8 +936,6 @@ void QWidgetPrivate::init(QWidget *parentWidget, Qt::WindowFlags f) if (allWidgets) allWidgets->insert(q); - q->data = &data; - #if QT_CONFIG(thread) if (!parent) { Q_ASSERT_X(QThread::isMainThread(), "QWidget",