QFileSystemWatcher: fix QWindowsFileSystemWatcherEngine crashes
Since QHash in Qt6 does not guarantee stable iterators after an insert it crashed from time to time. - possible crash at the erase call if pit is invalid - possible crash at insert if pit is invalid QHash<QString, int> myHash; auto i = myHash.find("foo"); myHash.insert("foo", 789); i.value(); // possible crash myHash.erase(i); // possible crash Task-number: QTBUG-96790 Change-Id: Ia9b53d46b8d1fef81ab5a130c229bc9e936f6521 Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io> (cherry picked from commit e60951eef4f0ade944e2f93ffe2f44abfc76d97a) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
acaf38cfe4
commit
fc6eb0bb7e
@ -430,8 +430,9 @@ QStringList QWindowsFileSystemWatcherEngine::addPaths(const QStringList &paths,
|
||||
FindCloseChangeNotification(hit.value().handle);
|
||||
thread->handles[index] = hit.value().handle = fileHandle;
|
||||
hit.value().flags = flags;
|
||||
thread->pathInfoForHandle.insert(fileHandle, pit.value());
|
||||
auto value = std::move(*pit);
|
||||
thread->pathInfoForHandle.erase(pit);
|
||||
thread->pathInfoForHandle.insert(fileHandle, std::move(value));
|
||||
}
|
||||
}
|
||||
// In addition, check on flags for sufficient notification attributes
|
||||
|
Loading…
x
Reference in New Issue
Block a user