From e596ce12853281ce95c0e2e0fddcd120561a686b Mon Sep 17 00:00:00 2001 From: Even Oscar Andersen Date: Wed, 19 Jun 2024 18:29:48 +0200 Subject: [PATCH] Fix use after destruct for QWidgetWindow MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The call to destroy() happened in QWindow destructor, after ̃QWidgetWindow destructor had run. This is to late since destroy calls setVisible which ends up in QWidgetWindowPrivate which accesses QWidgetWindow. Calling destroy from ̃the QWidgetWindow destructor makes sure the object is still alive when setVisible is called. Tested manually by running the documentviewer demo as given in the bug Fixes: QTBUG-126456 Pick-to: 6.7 6.5 Change-Id: I2ca0384c453d59c5ffb9f3588d592701bebf3aa8 Reviewed-by: Tor Arne Vestbø (cherry picked from commit 9b99361698219a73ce1b54fe56497560e02b2229) Reviewed-by: Qt Cherry-pick Bot --- src/widgets/kernel/qwidgetwindow.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/widgets/kernel/qwidgetwindow.cpp b/src/widgets/kernel/qwidgetwindow.cpp index ce9bb44b45f..46871d0da16 100644 --- a/src/widgets/kernel/qwidgetwindow.cpp +++ b/src/widgets/kernel/qwidgetwindow.cpp @@ -170,6 +170,9 @@ QWidgetWindow::QWidgetWindow(QWidget *widget) QWidgetWindow::~QWidgetWindow() { + // destroy while we are still alive + destroy(); + if (!m_widget) return;