kqueue: add a bit of extra paranoia on cancel
authorRyan Lortie <desrt@desrt.ca>
Thu, 26 Mar 2015 20:35:06 +0000 (16:35 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Fri, 5 Jun 2015 18:55:01 +0000 (14:55 -0400)
Cancellation of GPollFileMonitor is now handled correctly (in the sense
that no further signals will follow) but let's be extra paranoid and
disconnect our handler anyway, for good measure.

https://bugzilla.gnome.org/show_bug.cgi?id=739424

gio/kqueue/gkqueuefilemonitor.c

index 9bbbeff..78b7496 100644 (file)
@@ -186,7 +186,10 @@ g_kqueue_file_monitor_cancel (GFileMonitor *monitor)
       kqueue_monitor->sub = NULL;
     }
   else if (kqueue_monitor->fallback)
-    g_file_monitor_cancel (kqueue_monitor->fallback);
+    {
+      g_signal_handlers_disconnect_by_func (kqueue_monitor->fallback, _fallback_callback, kqueue_monitor);
+      g_file_monitor_cancel (kqueue_monitor->fallback);
+    }
 
   if (G_FILE_MONITOR_CLASS (g_kqueue_file_monitor_parent_class)->cancel)
     (*G_FILE_MONITOR_CLASS (g_kqueue_file_monitor_parent_class)->cancel) (monitor);