Blob Blame History Raw
Index: bonobo-activation/bonobo-activation-fork-server.c
===================================================================
RCS file: /cvs/gnome/libbonobo/bonobo-activation/bonobo-activation-fork-server.c,v
retrieving revision 1.31
diff -u -p -r1.31 bonobo-activation-fork-server.c
--- bonobo-activation/bonobo-activation-fork-server.c	14 Jun 2006 14:21:29 -0000	1.31
+++ bonobo-activation/bonobo-activation-fork-server.c	28 Jul 2006 22:43:53 -0000
@@ -276,6 +276,18 @@ bonobo_activation_server_fork_init (gboo
         }
 }
 
+static void
+child_setup (gpointer user_data)
+{
+#ifndef G_OS_WIN32
+        int pipe_fd = GPOINTER_TO_INT (user_data);
+
+        /* unset close on exec */
+        fcntl (pipe_fd, F_SETFD, 0);
+#endif
+}
+
+
 CORBA_Object
 bonobo_activation_server_by_forking (
 	const char                         **cmd_const,
@@ -402,10 +414,12 @@ bonobo_activation_server_by_forking (
 
 	/* Spawn */
         if (!g_spawn_async (NULL, (gchar **) cmd, newenv,
+#ifdef G_OS_WIN32
                             G_SPAWN_LEAVE_DESCRIPTORS_OPEN |
+#endif
                             G_SPAWN_SEARCH_PATH |
                             G_SPAWN_CHILD_INHERITS_STDIN,
-                            NULL, NULL,
+                            child_setup, GINT_TO_POINTER (iopipes[1]),
                             NULL,
                             &error)) {
                 Bonobo_GeneralError *errval;