summaryrefslogtreecommitdiffstats
path: root/src/widgets
diff options
context:
space:
mode:
authorOlivier Goffart <ogoffart@woboq.com>2017-03-02 08:57:48 +0100
committerOlivier Goffart (Woboq GmbH) <ogoffart@woboq.com>2017-03-02 15:31:28 +0000
commit2b13ba0ca0a70605c4a189072e4bc0cf6d0601d2 (patch)
tree6de00e915383ed685efe3cdc29013de3bd51fe04 /src/widgets
parent8387d87bdcf7dfb359515f44b17f523791bc8edb (diff)
Fix UB in QWidgetItemV2::~QWidgetItemV2
We might get there because 'wid' is already partially deleted (called from ~QObject). In that case, it is an undefined behavior to call a QWidget member function on it. Use QObjectPrivate::get instead. Change-Id: I6da314bf8385684d1332aa031a2d92012941303b Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Diffstat (limited to 'src/widgets')
-rw-r--r--src/widgets/kernel/qlayoutitem.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/widgets/kernel/qlayoutitem.cpp b/src/widgets/kernel/qlayoutitem.cpp
index ee0c28ec76..51793bf060 100644
--- a/src/widgets/kernel/qlayoutitem.cpp
+++ b/src/widgets/kernel/qlayoutitem.cpp
@@ -767,7 +767,7 @@ QWidgetItemV2::QWidgetItemV2(QWidget *widget)
QWidgetItemV2::~QWidgetItemV2()
{
if (wid) {
- QWidgetPrivate *wd = wid->d_func();
+ auto *wd = static_cast<QWidgetPrivate *>(QObjectPrivate::get(wid));
if (wd->widgetItem == this)
wd->widgetItem = 0;
}