summaryrefslogtreecommitdiffstats
path: root/src/widgets/accessible
diff options
context:
space:
mode:
authorChristian Ehrlicher <ch.ehrlicher@gmx.de>2018-09-14 22:58:58 +0200
committerChristian Ehrlicher <ch.ehrlicher@gmx.de>2018-10-03 18:00:29 +0000
commitd37d8e962a1b9e83800d17207c78bc87f7d64c31 (patch)
tree0dbbb9756a91204777ee18116b42268941d5965d /src/widgets/accessible
parent01ade488ddf6dc667f38173ba3b2330224761f45 (diff)
QAccessibleTable(Header)Cell: fix isValid()
QAccessibleTable(Header)Cell::isValid() did not check if the view is still valid as it is done in QAccessibleTable::isValid() which can lead to a crash during destruction when e.g. operator<<(QAccessibleInterface) is called. Change-Id: I930bf4c22aa0aa6868f58a8e5d0dd1557f6b17af Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io> Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
Diffstat (limited to 'src/widgets/accessible')
-rw-r--r--src/widgets/accessible/itemviews.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/widgets/accessible/itemviews.cpp b/src/widgets/accessible/itemviews.cpp
index 04a5dcc878..159d61d683 100644
--- a/src/widgets/accessible/itemviews.cpp
+++ b/src/widgets/accessible/itemviews.cpp
@@ -110,7 +110,7 @@ QAccessibleTable::QAccessibleTable(QWidget *w)
bool QAccessibleTable::isValid() const
{
- return (view() && !qobject_cast<QWidget*>(view())->d_func()->data.in_destructor);
+ return view() && !qt_widget_private(view())->data.in_destructor;
}
QAccessibleTable::~QAccessibleTable()
@@ -1091,7 +1091,8 @@ void QAccessibleTableCell::setText(QAccessible::Text /*t*/, const QString &text)
bool QAccessibleTableCell::isValid() const
{
- return view && view->model() && m_index.isValid();
+ return view && !qt_widget_private(view)->data.in_destructor
+ && view->model() && m_index.isValid();
}
QAccessibleInterface *QAccessibleTableCell::parent() const
@@ -1180,7 +1181,8 @@ void QAccessibleTableHeaderCell::setText(QAccessible::Text, const QString &)
bool QAccessibleTableHeaderCell::isValid() const
{
- return view && view->model() && (index >= 0)
+ return view && !qt_widget_private(view)->data.in_destructor
+ && view->model() && (index >= 0)
&& ((orientation == Qt::Horizontal) ? (index < view->model()->columnCount()) : (index < view->model()->rowCount()));
}