diff options
| author | Nicolas Fella <[email protected]> | 2026-05-07 14:54:25 +0200 |
|---|---|---|
| committer | Méven Car <[email protected]> | 2026-05-07 12:54:25 +0000 |
| commit | 8ee2bfee960819d9f92e486d93f9d59ffe230bbb (patch) | |
| tree | aeea95c93a8bdb7f4ce19a6d9fdcec01575c2e54 /src | |
| parent | 6d51a60cb209dd0490aaab4c0c85ff5ad2ca0a0d (diff) | |
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
Diffstat (limited to 'src')
| -rw-r--r-- | src/userfeedback/settingsdatasource.cpp | 22 | ||||
| -rw-r--r-- | src/userfeedback/settingsdatasource.h | 3 |
2 files changed, 8 insertions, 17 deletions
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<DolphinMainWindow *>(widget)) { - m_mainWindow = static_cast<DolphinMainWindow *>(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<DolphinMainWindow *>(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 |
