From 2a731003cf7b6a85762c4e94d64c49dfa77be325 Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 7 Jul 2023 13:08:45 +0200 Subject: [PATCH] Core: Guard against pages that forgot to create their widgets This should not happen, but when it happens, the resulting crash is quite cryptic. Make it a bit more obvious. Change-Id: Icbe40206cfdbae93ccb072d7027fcaf109f2f39f Reviewed-by: Marcus Tillmanns --- src/plugins/coreplugin/dialogs/ioptionspage.cpp | 1 + src/plugins/coreplugin/dialogs/settingsdialog.cpp | 9 ++++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/plugins/coreplugin/dialogs/ioptionspage.cpp b/src/plugins/coreplugin/dialogs/ioptionspage.cpp index bd94fca9b97..31bf0069b9e 100644 --- a/src/plugins/coreplugin/dialogs/ioptionspage.cpp +++ b/src/plugins/coreplugin/dialogs/ioptionspage.cpp @@ -132,6 +132,7 @@ QWidget *IOptionsPage::widget() if (!m_widget) { if (m_widgetCreator) { m_widget = m_widgetCreator(); + QTC_CHECK(m_widget); } else if (m_settingsProvider) { m_widget = new IOptionsPageWidget; AspectContainer *container = m_settingsProvider(); diff --git a/src/plugins/coreplugin/dialogs/settingsdialog.cpp b/src/plugins/coreplugin/dialogs/settingsdialog.cpp index 9a9de241ab4..d4ff3250c4d 100644 --- a/src/plugins/coreplugin/dialogs/settingsdialog.cpp +++ b/src/plugins/coreplugin/dialogs/settingsdialog.cpp @@ -345,9 +345,12 @@ private: void showEvent(QShowEvent *event) final { if (!widget()) { - QWidget *inner = m_page->widget(); - setWidget(inner); - inner->setAutoFillBackground(false); + if (QWidget *inner = m_page->widget()) { + setWidget(inner); + inner->setAutoFillBackground(false); + } else { + QTC_CHECK(false); + } } QScrollArea::showEvent(event);