gtester: Use FD_CLOEXEC when creating pipes
authorColin Walters <walters@verbum.org>
Wed, 23 Jan 2013 16:51:48 +0000 (11:51 -0500)
committerColin Walters <walters@verbum.org>
Wed, 23 Jan 2013 17:23:51 +0000 (12:23 -0500)
We were already unsetting the cloexec flag for the child later,
just not actually starting with it.

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

glib/gtester.c

index 4edcf2d..0a2feb2 100644 (file)
@@ -20,6 +20,7 @@
 #include "config.h"
 
 #include <glib.h>
+#include <glib-unix.h>
 #include <gstdio.h>
 #include <string.h>
 #include <stdlib.h>
@@ -285,12 +286,13 @@ launch_test_binary (const char *binary,
   gboolean loop_pending;
   gint i = 0;
 
-  if (pipe (report_pipe) < 0)
+  if (!g_unix_open_pipe (report_pipe, FD_CLOEXEC, &error))
     {
       if (subtest_mode_fatal)
-        g_error ("Failed to open pipe for test binary: %s: %s", binary, g_strerror (errno));
+        g_error ("Failed to open pipe for test binary: %s: %s", binary, error->message);
       else
-        g_warning ("Failed to open pipe for test binary: %s: %s", binary, g_strerror (errno));
+        g_warning ("Failed to open pipe for test binary: %s: %s", binary, error->message);
+      g_clear_error (&error);
       return FALSE;
     }