From d89dc8f318ba4dcb107239f01796903e6f3bdf1c Mon Sep 17 00:00:00 2001 From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> Date: Sun, 21 Sep 2025 23:25:55 +1000 Subject: plugin/fsm: fix crash Don't capture entries cause entries may be destroyed before async callback --- plugin/src/Caelestia/Models/filesystemmodel.cpp | 11 +++++------ 1 file 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 oldPaths; + for (const auto& entry : m_entries) { + oldPaths << entry->path(); + } + const auto future = QtConcurrent::run([=](QPromise, QSet>>& promise) { const auto flags = recursive ? QDirIterator::Subdirectories : QDirIterator::NoIteratorFlags; @@ -336,11 +340,6 @@ void FileSystemModel::updateEntriesForDir(const QString& dir) { newPaths.insert(path); } - QSet oldPaths; - for (const auto& entry : oldEntries) { - oldPaths.insert(entry->path()); - } - if (promise.isCanceled() || newPaths == oldPaths) { return; } -- cgit v1.2.3-freya