diff options
author | Colin Walters <walters@verbum.org> | 2008-07-24 16:19:34 -0400 |
---|---|---|
committer | Colin Walters <walters@verbum.org> | 2008-07-24 16:19:34 -0400 |
commit | d86df0220e37b9bf10878625664b44b5d79ee488 (patch) | |
tree | 0f7d2cd535d35823499ecf262b5d24870522483c /dbus/dbus-spawn.c | |
parent | 4cbc30465e4fba8026240945cac7a651fda5dca3 (diff) | |
parent | 3bc6840b04108d895ec3962ed5933bb0edb20cf4 (diff) |
Merge branch 'master' of ssh://walters@git.freedesktop.org/git/dbus/dbus
Diffstat (limited to 'dbus/dbus-spawn.c')
-rw-r--r-- | dbus/dbus-spawn.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/dbus/dbus-spawn.c b/dbus/dbus-spawn.c index d74b3265..35ccba6c 100644 --- a/dbus/dbus-spawn.c +++ b/dbus/dbus-spawn.c @@ -880,6 +880,7 @@ write_status_and_exit (int fd, int status) static void do_exec (int child_err_report_fd, char **argv, + char **envp, DBusSpawnChildSetupFunc child_setup, void *user_data) { @@ -910,8 +911,17 @@ do_exec (int child_err_report_fd, _dbus_warn ("Fd %d did not have the close-on-exec flag set!\n", i); } #endif + + if (envp == NULL) + { + extern char **environ; + + _dbus_assert (environ != NULL); + + envp = environ; + } - execv (argv[0], argv); + execve (argv[0], argv, envp); /* Exec failed */ write_err_and_exit (child_err_report_fd, @@ -1190,6 +1200,7 @@ _dbus_spawn_async_with_babysitter (DBusBabysitter **sitter_p, { do_exec (child_err_report_pipe[WRITE_END], argv, + env, child_setup, user_data); _dbus_assert_not_reached ("Got to code after exec() - should have exited on error"); } @@ -1218,6 +1229,8 @@ _dbus_spawn_async_with_babysitter (DBusBabysitter **sitter_p, else _dbus_babysitter_unref (sitter); + dbus_free_string_array (env); + _DBUS_ASSERT_ERROR_IS_CLEAR (error); return TRUE; |