From 76072a2dde4a4acc8be8d3c47efbc6811ebe0c1e Mon Sep 17 00:00:00 2001 From: Philip Withnall Date: Fri, 10 Nov 2017 15:10:26 +0000 Subject: [PATCH] kqueue: Fix invalid emission of G_FILE_MONITOR_EVENT_MOVED event MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit That event is deprecated, and the kqueue backend can’t provide enough information to go alongside the event (i.e. the name of the new file). Use G_FILE_MONITOR_EVENT_DELETED instead. Quite disappointed in the kqueue documentation for this: I cannot find a single piece of documentation or example about how NOTE_RENAME is supposed to communicate the new name of the file. If it turns out that this is possible, the code can be amended again in future. At least now it doesn’t abort. Signed-off-by: Philip Withnall https://bugzilla.gnome.org/show_bug.cgi?id=776147 --- gio/kqueue/kqueue-helper.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gio/kqueue/kqueue-helper.c b/gio/kqueue/kqueue-helper.c index d4e66cd4d..e7d583c8b 100644 --- a/gio/kqueue/kqueue-helper.c +++ b/gio/kqueue/kqueue-helper.c @@ -97,8 +97,10 @@ convert_kqueue_events_to_gio (uint32_t flags, gboolean *done) } if (flags & NOTE_RENAME) { + /* Since there’s apparently no way to get the new name of the file out of + * kqueue(), all we can do is say that this one has been deleted. */ *done = TRUE; - return G_FILE_MONITOR_EVENT_MOVED; + return G_FILE_MONITOR_EVENT_DELETED; } if (flags & NOTE_REVOKE) {