aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2018-12-13 14:32:46 +0100
committerChristian Kandeler <christian.kandeler@qt.io>2018-12-14 08:44:03 +0000
commite3026623a3682cad7d89d97876cb3dd5b6d9de7e (patch)
treebb8e7b4ff077a24105c59d21b8f3b54afaa31c27
parent0ea3346d68890beed136bdce67ecf9cf0b4bb3b3 (diff)
FileSystemWatcher: Prevent double-delete of static data
If any static data directly or indirectly holds a FileSystemWatcher, destruction of that data competes with the destruction of FileSystemWatcher's static data. Prevent this by guarding the access to said static data in FileSystemWatcher's destructor. Change-Id: I4def4cab36583249b0c512387e57400f532b6709 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Eike Ziller <eike.ziller@qt.io>
-rw-r--r--src/libs/utils/filesystemwatcher.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/libs/utils/filesystemwatcher.cpp b/src/libs/utils/filesystemwatcher.cpp
index 4304441832..bf29466c07 100644
--- a/src/libs/utils/filesystemwatcher.cpp
+++ b/src/libs/utils/filesystemwatcher.cpp
@@ -206,7 +206,7 @@ FileSystemWatcher::~FileSystemWatcher()
if (!d->m_directories.isEmpty())
removeDirectories(directories());
- if (--(d->m_staticData->m_objectCount) == 0) {
+ if (!fileSystemWatcherStaticDataMap.isDestroyed() && --(d->m_staticData->m_objectCount) == 0) {
delete d->m_staticData->m_watcher;
d->m_staticData->m_watcher = nullptr;
d->m_staticData->m_fileCount.clear();