plugin/fsm: fix crash
Don't capture entries cause entries may be destroyed before async callback
This commit is contained in:
parent
7b914f1faa
commit
d89dc8f318
1 changed files with 5 additions and 6 deletions
|
|
@ -276,9 +276,13 @@ void FileSystemModel::updateEntriesForDir(const QString& dir) {
|
||||||
const auto showHidden = m_showHidden;
|
const auto showHidden = m_showHidden;
|
||||||
const auto filter = m_filter;
|
const auto filter = m_filter;
|
||||||
const auto nameFilters = m_nameFilters;
|
const auto nameFilters = m_nameFilters;
|
||||||
const auto oldEntries = m_entries;
|
|
||||||
const auto baseDir = m_dir;
|
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 future = QtConcurrent::run([=](QPromise<QPair<QSet<QString>, QSet<QString>>>& promise) {
|
||||||
const auto flags = recursive ? QDirIterator::Subdirectories : QDirIterator::NoIteratorFlags;
|
const auto flags = recursive ? QDirIterator::Subdirectories : QDirIterator::NoIteratorFlags;
|
||||||
|
|
||||||
|
|
@ -336,11 +340,6 @@ void FileSystemModel::updateEntriesForDir(const QString& dir) {
|
||||||
newPaths.insert(path);
|
newPaths.insert(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
QSet<QString> oldPaths;
|
|
||||||
for (const auto& entry : oldEntries) {
|
|
||||||
oldPaths.insert(entry->path());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (promise.isCanceled() || newPaths == oldPaths) {
|
if (promise.isCanceled() || newPaths == oldPaths) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue