# HG changeset patch # User Chris Cannam # Date 1545044069 0 # Node ID f1dc72b940d558bfa8fca0b5bafbc524d296f465 # Parent cd4617b1896008a668661a09dd259db2db790671 Crude way to avoid callback on a deleted watcher on exit (macOS) diff -r cd4617b18960 -r f1dc72b940d5 src/fswatcher.cpp --- a/src/fswatcher.cpp Mon Dec 17 09:50:16 2018 +0000 +++ b/src/fswatcher.cpp Mon Dec 17 10:54:29 2018 +0000 @@ -91,6 +91,8 @@ * drop 10.4 support for EasyMercurial. */ +static bool abandoning = false; // emergency flag for use by non-member callback + FsWatcher::FsWatcher() : m_lastToken(0), m_lastCounter(0) @@ -107,6 +109,8 @@ FsWatcher::~FsWatcher() { + QMutexLocker locker(&m_mutex); + abandoning = true; } void @@ -151,6 +155,7 @@ const FSEventStreamEventFlags /* eventFlags */[], const FSEventStreamEventId /*eventIDs */[]) { + if (abandoning) return; FsWatcher *watcher = reinterpret_cast(clientCallBackInfo); const char *const *cpaths = reinterpret_cast(paths); for (size_t i = 0; i < numEvents; ++i) {