Use inotify_init1 when available
authorMatthias Clasen <mclasen@redhat.com>
Mon, 15 Jun 2009 02:26:52 +0000 (22:26 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 15 Jun 2009 02:29:17 +0000 (22:29 -0400)
To avoid leaking the inotify fd. Fixes bug 585478.

configure.in
gio/inotify/inotify-kernel.c

index 2275962ed8572b6092312678aec3df8051fc11ba..540fbd66821630cf900cc8f48cc2244a012ad269 100644 (file)
@@ -1599,6 +1599,7 @@ inotify_support=no
 AC_CHECK_HEADERS([sys/inotify.h],
 [
        inotify_support=yes
+       AC_CHECK_FUNCS(inotify_init1)
 ])
 
 AM_CONDITIONAL(HAVE_INOTIFY, [test "$inotify_support" = "yes"])
index f9861a0bdb71637174c421c31c8387566f5a720b..b0b85ae4b818057adb7fcbfe921312a4f60afb93 100644 (file)
@@ -187,10 +187,15 @@ gboolean _ik_startup (void (*cb)(ik_event_t *event))
   /* Ignore multi-calls */
   if (initialized) 
     return inotify_instance_fd >= 0;
-  
+
   initialized = TRUE;
+
+#ifdef HAVE_INOTIFY_INIT1
+  inotify_instance_fd = inotify_init1 (IN_CLOEXEC);
+#else
   inotify_instance_fd = inotify_init ();
-  
+#endif
+
   if (inotify_instance_fd < 0)
     return FALSE;