summaryrefslogtreecommitdiffstats
path: root/src/widgets/dialogs
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2016-09-23 22:28:33 +0200
committerLiang Qi <liang.qi@qt.io>2016-09-23 22:28:33 +0200
commit680dd3313cd15ab4d9d6b8b3bde77aabbd8de0b0 (patch)
tree4e8f59ad3012be8aa844288bec9e6a8216ba6056 /src/widgets/dialogs
parentbde3384c9e3423b2b5fec565a32e49a1f796cd68 (diff)
parentd95cb94baa6302bea6ad57a9690453e9b618421e (diff)
Merge remote-tracking branch 'origin/5.6' into 5.7
Conflicts: src/corelib/global/qlogging.cpp Change-Id: I9cc8f25ad897efab6a42cb5c5161b1c9402952f0
Diffstat (limited to 'src/widgets/dialogs')
-rw-r--r--src/widgets/dialogs/qfontdialog.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/widgets/dialogs/qfontdialog.cpp b/src/widgets/dialogs/qfontdialog.cpp
index c373bcf1df..b62cd58db7 100644
--- a/src/widgets/dialogs/qfontdialog.cpp
+++ b/src/widgets/dialogs/qfontdialog.cpp
@@ -1036,7 +1036,9 @@ void QFontDialog::done(int result)
bool QFontDialogPrivate::canBeNativeDialog() const
{
- Q_Q(const QFontDialog);
+ // Don't use Q_Q here! This function is called from ~QDialog,
+ // so Q_Q calling q_func() invokes undefined behavior (invalid cast in q_func()).
+ const QDialog * const q = static_cast<const QDialog*>(q_ptr);
if (nativeDialogInUse)
return true;
if (QCoreApplication::testAttribute(Qt::AA_DontUseNativeDialogs)