From 03b5ecce4ab8dc879e27dc8f07d6f3ef846efde0 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Mon, 1 Dec 2014 09:10:43 +0100 Subject: FSEvents file system watcher: Do not watch whole parent hierarchies. Unfortunately the FSEvents implementation for watching parent hierarchies has the major flaw, that watching a path will then create watches for the whole parent hierarchy even if that hierarchy is already watched. Watching /A/B/C and /A/B/D will create two watches each for /A and /A/B. This leads to an explosion of open file handles. Luckily we do not need to watch the parent hierarchy since this is not a supported usecase of QFileSystemWatcher anyhow, so just don't do it. Task-number: QTCREATORBUG-13531 Change-Id: I9ecb5f08e4be35e4fbd58a7ca3155867fcb1589f Reviewed-by: Oswald Buddenhagen --- src/corelib/io/qfilesystemwatcher_fsevents.mm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'src/corelib/io') diff --git a/src/corelib/io/qfilesystemwatcher_fsevents.mm b/src/corelib/io/qfilesystemwatcher_fsevents.mm index eebca1cfb0..90ef7a6336 100644 --- a/src/corelib/io/qfilesystemwatcher_fsevents.mm +++ b/src/corelib/io/qfilesystemwatcher_fsevents.mm @@ -518,7 +518,6 @@ bool QFseventsFileSystemWatcherEngine::startStream() NULL }; const CFAbsoluteTime latency = .5; // in seconds - FSEventStreamCreateFlags flags = kFSEventStreamCreateFlagWatchRoot; // Never start with kFSEventStreamEventIdSinceNow, because this will generate an invalid // soft-assert in FSEventStreamFlushSync in CarbonCore when no event occurred. @@ -530,7 +529,7 @@ bool QFseventsFileSystemWatcherEngine::startStream() reinterpret_cast(pathsToWatch), lastReceivedEvent, latency, - flags); + FSEventStreamCreateFlags(0)); if (!stream) { DEBUG() << "Failed to create stream!"; -- cgit v1.2.3