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 <volker.hilsheimer@qt.io>
This commit is contained in:
Marc Mutz 2025-03-03 10:53:04 +01:00
parent c770015876
commit bcd29a9eab

View File

@ -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",