From e3026623a3682cad7d89d97876cb3dd5b6d9de7e Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Thu, 13 Dec 2018 14:32:46 +0100 Subject: [PATCH] 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 Reviewed-by: Eike Ziller --- src/libs/utils/filesystemwatcher.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/utils/filesystemwatcher.cpp b/src/libs/utils/filesystemwatcher.cpp index 43044418325..bf29466c070 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();