return;
}
+ if (inevt.wd == -1)
+ {
+ // Although this is not supposed to happen, we seem to be getting
+ // occasional IN_ACCESS/IN_MODIFY events without valid watch value.
+ wxFileSystemWatcherEvent
+ event
+ (
+ wxFSW_EVENT_WARNING,
+ wxString::Format
+ (
+ _("Invalid inotify event for \"%s\""),
+ inevt.len ? inevt.name : ""
+ )
+ );
+ SendEvent(event);
+ return;
+ }
+
wxFSWatchEntry& watch = *(it->second);
// Now IN_UNMOUNT. We must do so here, as it's not in the watch flags
// get watch entry for this event
wxFSWatchEntryDescriptors::iterator wit = m_watchMap.find(inevt.wd);
- wxCHECK_RET(wit != m_watchMap.end(),
- "Watch descriptor not present in the watch map!");
-
- // Tell the owner, in case it's interested
- // If there's a filespec, assume he's not
- wxFSWatchEntry& watch = *(wit->second);
- if ( watch.GetFilespec().empty() )
+ if (wit == m_watchMap.end())
+ {
+ wxLogTrace(wxTRACE_FSWATCHER,
+ "Watch descriptor not present in the watch map!");
+ }
+ else
{
- int flags = Native2WatcherFlags(inevt.mask);
- wxFileName path = GetEventPath(watch, inevt);
+ // Tell the owner, in case it's interested
+ // If there's a filespec, assume he's not
+ wxFSWatchEntry& watch = *(wit->second);
+ if ( watch.GetFilespec().empty() )
{
- wxFileSystemWatcherEvent event(flags, path, path);
- SendEvent(event);
+ int flags = Native2WatcherFlags(inevt.mask);
+ wxFileName path = GetEventPath(watch, inevt);
+ {
+ wxFileSystemWatcherEvent event(flags, path, path);
+ SendEvent(event);
+ }
}
}