GitLab repository storage has been migrated to hashed layout. Please contact Infrastructure team if you notice any issues with repositories or hooks.

Commit 5ec93805 authored by Tor Lillqvist's avatar Tor Lillqvist Committed by Tor Lillqvist

Must set the GError also in the unexpected EOF case.

2008-03-03  Tor Lillqvist  <tml@novell.com>

	* glib/gspawn-win32.c (read_helper_report): Must set the GError
	also in the unexpected EOF case.
	(do_spawn_with_pipes): Must protect also new_argv[0].


svn path=/trunk/; revision=6612
parent d6bc9af6
2008-03-03 Tor Lillqvist <tml@novell.com>
* glib/gspawn-win32.c (read_helper_report): Must set the GError
also in the unexpected EOF case.
(do_spawn_with_pipes): Must protect also new_argv[0].
2008-03-01 Benjamin Otte <otte@gnome.org>
* glib/glist.c:
......
......@@ -335,7 +335,12 @@ read_helper_report (int fd,
return FALSE;
}
else if (chunk == 0)
{
g_set_error (error, G_SPAWN_ERROR, G_SPAWN_ERROR_FAILED,
_("Failed to read from child pipe (%s)"),
"EOF");
break; /* EOF */
}
else
bytes += chunk;
}
......@@ -600,7 +605,7 @@ do_spawn_with_pipes (gint *exit_status,
else
helper_process = g_strdup (helper_process);
new_argv[0] = helper_process;
new_argv[0] = protect_argv_string (helper_process);
_g_sprintf (args[ARG_CHILD_ERR_REPORT], "%d", child_err_report_pipe[1]);
new_argv[ARG_CHILD_ERR_REPORT] = args[ARG_CHILD_ERR_REPORT];
......@@ -719,6 +724,7 @@ do_spawn_with_pipes (gint *exit_status,
conv_error_index - ARG_PROGRAM, conv_error->message);
g_error_free (conv_error);
g_strfreev (protected_argv);
g_free (new_argv[0]);
g_free (new_argv[ARG_WORKING_DIRECTORY]);
g_free (new_argv);
g_free (helper_process);
......@@ -733,6 +739,7 @@ do_spawn_with_pipes (gint *exit_status,
conv_error->message);
g_error_free (conv_error);
g_strfreev (protected_argv);
g_free (new_argv[0]);
g_free (new_argv[ARG_WORKING_DIRECTORY]);
g_free (new_argv);
g_free (helper_process);
......@@ -748,9 +755,6 @@ do_spawn_with_pipes (gint *exit_status,
g_free (helper_process);
if (wenvp != NULL)
/* Let's hope envp hasn't mucked with PATH so that
* gspawn-win32-helper.exe isn't found.
*/
rc = _wspawnvpe (P_NOWAIT, whelper, (const wchar_t **) wargv, (const wchar_t **) wenvp);
else
rc = _wspawnvp (P_NOWAIT, whelper, (const wchar_t **) wargv);
......@@ -772,6 +776,7 @@ do_spawn_with_pipes (gint *exit_status,
g_strfreev (protected_argv);
g_free (new_argv[0]);
g_free (new_argv[ARG_WORKING_DIRECTORY]);
g_free (new_argv);
......@@ -849,6 +854,7 @@ do_spawn_with_pipes (gint *exit_status,
return TRUE;
cleanup_and_fail:
if (rc != -1)
CloseHandle ((HANDLE) rc);
if (child_err_report_pipe[0] != -1)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment