diff --git a/src/widgets/dialogs/qerrormessage.cpp b/src/widgets/dialogs/qerrormessage.cpp index f1adb6aa819..6dda2cc09d8 100644 --- a/src/widgets/dialogs/qerrormessage.cpp +++ b/src/widgets/dialogs/qerrormessage.cpp @@ -407,7 +407,9 @@ void QErrorMessage::showMessage(const QString &message, const QString &type) void QErrorMessagePrivate::setVisible(bool visible) { - Q_Q(QErrorMessage); + // 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);