diff --git a/src/widgets/dialogs/qfontdialog.cpp b/src/widgets/dialogs/qfontdialog.cpp index ee918992df5..24b91a873dd 100644 --- a/src/widgets/dialogs/qfontdialog.cpp +++ b/src/widgets/dialogs/qfontdialog.cpp @@ -956,7 +956,9 @@ void QFontDialog::setVisible(bool visible) */ void QFontDialogPrivate::setVisible(bool visible) { - Q_Q(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 auto q = static_cast(q_ptr); if (canBeNativeDialog()) setNativeDialogVisible(visible);