From 8ee2bfee960819d9f92e486d93f9d59ffe230bbb Mon Sep 17 00:00:00 2001 From: Nicolas Fella Date: Thu, 7 May 2026 14:54:25 +0200 Subject: userfeedback: prevent dangling pointer access in SettingsDataSource When the main window is closed m_mainWindow becomes dangling Since data collection happens infrequently we don't need to cache the window, just find it on demand BUG: 519876 SENTRY: DOLPHIN-VPX --- src/userfeedback/settingsdatasource.cpp | 22 ++++++++-------------- src/userfeedback/settingsdatasource.h | 3 --- 2 files changed, 8 insertions(+), 17 deletions(-) (limited to 'src/userfeedback') diff --git a/src/userfeedback/settingsdatasource.cpp b/src/userfeedback/settingsdatasource.cpp index c517793ad..6e34dbcda 100644 --- a/src/userfeedback/settingsdatasource.cpp +++ b/src/userfeedback/settingsdatasource.cpp @@ -31,22 +31,16 @@ QString SettingsDataSource::description() const QVariant SettingsDataSource::data() { - if (!m_mainWindow) { - // This assumes there is only one DolphinMainWindow per process. - const auto topLevelWidgets = QApplication::topLevelWidgets(); - for (const auto widget : topLevelWidgets) { - if (qobject_cast(widget)) { - m_mainWindow = static_cast(widget); - break; - } - } - } - QVariantMap map; - if (m_mainWindow) { - map.insert(QStringLiteral("informationPanelEnabled"), m_mainWindow->isInformationPanelEnabled()); - map.insert(QStringLiteral("foldersPanelEnabled"), m_mainWindow->isFoldersPanelEnabled()); + // This assumes there is only one DolphinMainWindow per process. + const auto topLevelWidgets = QApplication::topLevelWidgets(); + for (const auto widget : topLevelWidgets) { + if (auto mainWindow = qobject_cast(widget)) { + map.insert(QStringLiteral("informationPanelEnabled"), mainWindow->isInformationPanelEnabled()); + map.insert(QStringLiteral("foldersPanelEnabled"), mainWindow->isFoldersPanelEnabled()); + break; + } } map.insert(QStringLiteral("tooltipsEnabled"), GeneralSettings::showToolTips()); diff --git a/src/userfeedback/settingsdatasource.h b/src/userfeedback/settingsdatasource.h index 9804c78a7..bd1cec015 100644 --- a/src/userfeedback/settingsdatasource.h +++ b/src/userfeedback/settingsdatasource.h @@ -19,9 +19,6 @@ public: QString name() const override; QString description() const override; QVariant data() override; - -private: - DolphinMainWindow *m_mainWindow = nullptr; }; #endif // SETTINGSDATASOURCE_H -- cgit v1.3