Also check errno to detect true errors from spawn*(). (#157258, reported

2004-11-30  Tor Lillqvist  <tml@iki.fi>

	* glib/gspawn-win32-helper.c (WinMain): Also check errno to detect
	true errors from spawn*(). (#157258, reported by Bruce Hochstetler)
This commit is contained in:
Tor Lillqvist 2004-11-30 02:23:54 +00:00 committed by Tor Lillqvist
parent 60d2a93397
commit 0dec9146a0
6 changed files with 29 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2004-11-30 Tor Lillqvist <tml@iki.fi>
* glib/gspawn-win32-helper.c (WinMain): Also check errno to detect
true errors from spawn*(). (#157258, reported by Bruce Hochstetler)
2004-11-08 Matthias Clasen <mclasen@redhat.com>
* glib/gmain.c: Initialize child_watch_count to 1, so

View File

@ -1,3 +1,8 @@
2004-11-30 Tor Lillqvist <tml@iki.fi>
* glib/gspawn-win32-helper.c (WinMain): Also check errno to detect
true errors from spawn*(). (#157258, reported by Bruce Hochstetler)
2004-11-08 Matthias Clasen <mclasen@redhat.com>
* glib/gmain.c: Initialize child_watch_count to 1, so

View File

@ -1,3 +1,8 @@
2004-11-30 Tor Lillqvist <tml@iki.fi>
* glib/gspawn-win32-helper.c (WinMain): Also check errno to detect
true errors from spawn*(). (#157258, reported by Bruce Hochstetler)
2004-11-08 Matthias Clasen <mclasen@redhat.com>
* glib/gmain.c: Initialize child_watch_count to 1, so

View File

@ -1,3 +1,8 @@
2004-11-30 Tor Lillqvist <tml@iki.fi>
* glib/gspawn-win32-helper.c (WinMain): Also check errno to detect
true errors from spawn*(). (#157258, reported by Bruce Hochstetler)
2004-11-08 Matthias Clasen <mclasen@redhat.com>
* glib/gmain.c: Initialize child_watch_count to 1, so

View File

@ -1,3 +1,8 @@
2004-11-30 Tor Lillqvist <tml@iki.fi>
* glib/gspawn-win32-helper.c (WinMain): Also check errno to detect
true errors from spawn*(). (#157258, reported by Bruce Hochstetler)
2004-11-08 Matthias Clasen <mclasen@redhat.com>
* glib/gmain.c: Initialize child_watch_count to 1, so

View File

@ -74,6 +74,7 @@ WinMain (struct HINSTANCE__ *hInstance,
int fd;
int mode;
int handle;
int saved_errno;
int no_error = CHILD_NO_ERROR;
int zero = 0;
gint file_and_argv_zero = 0;
@ -240,6 +241,8 @@ WinMain (struct HINSTANCE__ *hInstance,
else
handle = spawnv (mode, __argv[ARG_PROGRAM], new_argv + ARG_PROGRAM + file_and_argv_zero);
saved_errno = errno;
if (debug)
{
debugstring = g_string_new (NULL);
@ -251,7 +254,7 @@ WinMain (struct HINSTANCE__ *hInstance,
MessageBox (NULL, debugstring->str, "gspawn-win32-helper", 0);
}
if (handle < 0)
if (handle == -1 && saved_errno != 0)
write_err_and_exit (child_err_report_fd, CHILD_SPAWN_FAILED);
write (child_err_report_fd, &no_error, sizeof (no_error));