summaryrefslogtreecommitdiffstats
path: root/src/widgets/graphicsview
diff options
context:
space:
mode:
authorChristian Ehrlicher <ch.ehrlicher@gmx.de>2018-11-17 14:58:15 +0100
committerChristian Ehrlicher <ch.ehrlicher@gmx.de>2018-11-22 16:43:38 +0000
commit794140fb86b470821e3a298a0ba9c8dbbee202b9 (patch)
treed99f472a9c399f473995f6fdbcfac2ab9c8bc04a /src/widgets/graphicsview
parentd0fadae79fb63aa4acc036571ecfe9e937fcc56b (diff)
QGraphicsProxyWidget: Don't crash within setWidget() when a child proxy has no assigned widget
QGraphicsProxyWidget::setWidget() is checking if the newly assigned widget is already assigned to a child proxy widget without checking if the child has a widget assigned at all which lead to a nullptr reference if it is not the case. Therefore check if the assigned widget is a valid pointer. Fixes: QTBUG-15442 Change-Id: I006877f99895ca01975bdcad071cfcf90bea22ad Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
Diffstat (limited to 'src/widgets/graphicsview')
-rw-r--r--src/widgets/graphicsview/qgraphicsproxywidget.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/widgets/graphicsview/qgraphicsproxywidget.cpp b/src/widgets/graphicsview/qgraphicsproxywidget.cpp
index 177dbc4871..513cf9d361 100644
--- a/src/widgets/graphicsview/qgraphicsproxywidget.cpp
+++ b/src/widgets/graphicsview/qgraphicsproxywidget.cpp
@@ -607,20 +607,20 @@ void QGraphicsProxyWidgetPrivate::setWidget_helper(QWidget *newWidget, bool auto
for (QGraphicsItem *child : childItems) {
if (child->d_ptr->isProxyWidget()) {
QGraphicsProxyWidget *childProxy = static_cast<QGraphicsProxyWidget *>(child);
- QWidget * parent = childProxy->widget();
- while (parent->parentWidget() != 0) {
+ QWidget *parent = childProxy->widget();
+ while (parent && parent->parentWidget()) {
if (parent == widget)
break;
parent = parent->parentWidget();
}
if (!childProxy->widget() || parent != widget)
continue;
- childProxy->setWidget(0);
+ childProxy->setWidget(nullptr);
delete childProxy;
}
}
- widget = 0;
+ widget = nullptr;
#ifndef QT_NO_CURSOR
q->unsetCursor();
#endif