Close the process handle if the called doesn't want it also in the case
authorTor Lillqvist <tml@novell.com>
Sun, 20 Mar 2005 11:46:27 +0000 (11:46 +0000)
committerTor Lillqvist <tml@src.gnome.org>
Sun, 20 Mar 2005 11:46:27 +0000 (11:46 +0000)
2005-03-20  Tor Lillqvist  <tml@novell.com>

* glib/gspawn-win32.c (do_spawn_with_pipes): Close the process
handle if the called doesn't want it also in the case without a
helper process.
(g_spawn_sync): Don't ask for a child pid which we don't need.

ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-12
ChangeLog.pre-2-8
glib/gspawn-win32.c

index ba9ecd7..c334f56 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2005-03-20  Tor Lillqvist  <tml@novell.com>
 
+       * glib/gspawn-win32.c (do_spawn_with_pipes): Close the process
+       handle if the called doesn't want it also in the case without a
+       helper process.
+       (g_spawn_sync): Don't ask for a child pid which we don't need.
+
        * glib/gtimer.c: On Win32, use GetSystemTimeAsFileTime() instead
        of GetTickCount(). (#159507)
 
index ba9ecd7..c334f56 100644 (file)
@@ -1,5 +1,10 @@
 2005-03-20  Tor Lillqvist  <tml@novell.com>
 
+       * glib/gspawn-win32.c (do_spawn_with_pipes): Close the process
+       handle if the called doesn't want it also in the case without a
+       helper process.
+       (g_spawn_sync): Don't ask for a child pid which we don't need.
+
        * glib/gtimer.c: On Win32, use GetSystemTimeAsFileTime() instead
        of GetTickCount(). (#159507)
 
index ba9ecd7..c334f56 100644 (file)
@@ -1,5 +1,10 @@
 2005-03-20  Tor Lillqvist  <tml@novell.com>
 
+       * glib/gspawn-win32.c (do_spawn_with_pipes): Close the process
+       handle if the called doesn't want it also in the case without a
+       helper process.
+       (g_spawn_sync): Don't ask for a child pid which we don't need.
+
        * glib/gtimer.c: On Win32, use GetSystemTimeAsFileTime() instead
        of GetTickCount(). (#159507)
 
index ba9ecd7..c334f56 100644 (file)
@@ -1,5 +1,10 @@
 2005-03-20  Tor Lillqvist  <tml@novell.com>
 
+       * glib/gspawn-win32.c (do_spawn_with_pipes): Close the process
+       handle if the called doesn't want it also in the case without a
+       helper process.
+       (g_spawn_sync): Don't ask for a child pid which we don't need.
+
        * glib/gtimer.c: On Win32, use GetSystemTimeAsFileTime() instead
        of GetTickCount(). (#159507)
 
index 438191c..403a49d 100644 (file)
@@ -444,9 +444,18 @@ do_spawn_with_pipes (gboolean              dont_wait,
          goto cleanup_and_fail;
        }
 
-      if (child_handle && dont_wait && !dont_return_handle)
-       *child_handle = (GPid) rc;
-      else if (!dont_wait && exit_status)
+      if (dont_wait)
+       {
+         if (child_handle && !dont_return_handle)
+           *child_handle = (GPid) rc;
+         else
+           {
+             CloseHandle (rc);
+             if (child_handle)
+               *child_handle = 0;
+           }
+       }
+      else if (exit_status)
        *exit_status = rc;
       
       return TRUE;
@@ -685,7 +694,6 @@ g_spawn_sync (const gchar          *working_directory,
   gint outpipe = -1;
   gint errpipe = -1;
   gint reportpipe = -1;
-  GPid pid;
   GIOChannel *outchannel = NULL;
   GIOChannel *errchannel = NULL;
   GPollFD outfd, errfd;
@@ -723,7 +731,7 @@ g_spawn_sync (const gchar          *working_directory,
                            flags,
                            child_setup,
                            user_data,
-                           &pid,
+                           NULL,
                            NULL,
                            standard_output ? &outpipe : NULL,
                            standard_error ? &errpipe : NULL,
@@ -890,8 +898,6 @@ g_spawn_sync (const gchar          *working_directory,
   if (errpipe >= 0)
     close_and_invalidate (&errpipe);
   
-  g_spawn_close_pid (pid);
-
   if (failed)
     {
       if (outstr)