From c8237ec1cdc0a5c1d194065ba518ce6c44126d2e Mon Sep 17 00:00:00 2001 From: Tor Lillqvist Date: Sun, 20 Mar 2005 11:46:27 +0000 Subject: [PATCH] Close the process handle if the called doesn't want it also in the case 2005-03-20 Tor Lillqvist * 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 | 5 +++++ ChangeLog.pre-2-10 | 5 +++++ ChangeLog.pre-2-12 | 5 +++++ ChangeLog.pre-2-8 | 5 +++++ glib/gspawn-win32.c | 20 +++++++++++++------- 5 files changed, 33 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index ba9ecd7ed..c334f566c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2005-03-20 Tor Lillqvist + * 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) diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index ba9ecd7ed..c334f566c 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,5 +1,10 @@ 2005-03-20 Tor Lillqvist + * 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) diff --git a/ChangeLog.pre-2-12 b/ChangeLog.pre-2-12 index ba9ecd7ed..c334f566c 100644 --- a/ChangeLog.pre-2-12 +++ b/ChangeLog.pre-2-12 @@ -1,5 +1,10 @@ 2005-03-20 Tor Lillqvist + * 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) diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index ba9ecd7ed..c334f566c 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,5 +1,10 @@ 2005-03-20 Tor Lillqvist + * 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) diff --git a/glib/gspawn-win32.c b/glib/gspawn-win32.c index 438191c38..403a49d70 100644 --- a/glib/gspawn-win32.c +++ b/glib/gspawn-win32.c @@ -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)