xdgmime: Handle EINTR in open()
authorColin Walters <walters@verbum.org>
Mon, 27 Aug 2012 22:22:26 +0000 (18:22 -0400)
committerColin Walters <walters@verbum.org>
Tue, 28 Aug 2012 17:56:58 +0000 (13:56 -0400)
https://bugzilla.gnome.org/show_bug.cgi?id=682833

gio/xdgmime/xdgmimecache.c

index 0324e14..87a3cd0 100644 (file)
@@ -34,6 +34,7 @@
 
 #include <fcntl.h>
 #include <unistd.h>
+#include <errno.h>
 #include <fnmatch.h>
 #include <assert.h>
 
@@ -120,7 +121,9 @@ _xdg_mime_cache_new_from_file (const char *file_name)
   int minor;
 
   /* Open the file and map it into memory */
-  fd = open (file_name, O_RDONLY|_O_BINARY, 0);
+  do
+    fd = open (file_name, O_RDONLY|_O_BINARY, 0);
+  while (fd == -1 && errno == EINTR);
 
   if (fd < 0)
     return NULL;