summaryrefslogtreecommitdiff
path: root/plugin/src
diff options
context:
space:
mode:
author2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-09-21 23:25:55 +1000
committer2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-09-21 23:25:55 +1000
commitd89dc8f318ba4dcb107239f01796903e6f3bdf1c (patch)
treec85c3e0638857f726d99d94a0699c0f477290920 /plugin/src
parentbatterymonitor: change charging icon (diff)
downloadcaelestia-shell-d89dc8f318ba4dcb107239f01796903e6f3bdf1c.tar.gz
caelestia-shell-d89dc8f318ba4dcb107239f01796903e6f3bdf1c.tar.bz2
caelestia-shell-d89dc8f318ba4dcb107239f01796903e6f3bdf1c.zip
plugin/fsm: fix crash
Don't capture entries cause entries may be destroyed before async callback
Diffstat (limited to '')
-rw-r--r--plugin/src/Caelestia/Models/filesystemmodel.cpp11
1 files changed, 5 insertions, 6 deletions
diff --git a/plugin/src/Caelestia/Models/filesystemmodel.cpp b/plugin/src/Caelestia/Models/filesystemmodel.cpp
index b7889f0..536f14b 100644
--- a/plugin/src/Caelestia/Models/filesystemmodel.cpp
+++ b/plugin/src/Caelestia/Models/filesystemmodel.cpp
@@ -276,9 +276,13 @@ void FileSystemModel::updateEntriesForDir(const QString& dir) {
const auto showHidden = m_showHidden;
const auto filter = m_filter;
const auto nameFilters = m_nameFilters;
- const auto oldEntries = m_entries;
const auto baseDir = m_dir;
+ QSet<QString> oldPaths;
+ for (const auto& entry : m_entries) {
+ oldPaths << entry->path();
+ }
+
const auto future = QtConcurrent::run([=](QPromise<QPair<QSet<QString>, QSet<QString>>>& promise) {
const auto flags = recursive ? QDirIterator::Subdirectories : QDirIterator::NoIteratorFlags;
@@ -336,11 +340,6 @@ void FileSystemModel::updateEntriesForDir(const QString& dir) {
newPaths.insert(path);
}
- QSet<QString> oldPaths;
- for (const auto& entry : oldEntries) {
- oldPaths.insert(entry->path());
- }
-
if (promise.isCanceled() || newPaths == oldPaths) {
return;
}