plugin/fsm: fix crash

Don't capture entries cause entries may be destroyed before async callback
This commit is contained in:
2 * r + 2 * t 2025-09-21 23:25:55 +10:00
parent 7b914f1faa
commit d89dc8f318

View file

@ -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;
}