From: Christian Persch Date: Mon, 23 Mar 2020 09:57:56 +0100 Subject: screen: Use clean env when creating new tab https://gitlab.gnome.org/GNOME/gnome-terminal/issues/236 Origin: backport, https://gitlab.gnome.org/GNOME/gnome-terminal/-/commit/fd5ac772154426e2da5afd633b336414bca33be9 Bug-Ubuntu: https://bugs.launchpad.net/bugs/1922839 Last-Update: 2021-04-13 --- src/terminal-screen.cc | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/terminal-screen.cc b/src/terminal-screen.cc index 4e004c4..7b55165 100644 --- a/src/terminal-screen.cc +++ b/src/terminal-screen.cc @@ -275,8 +275,7 @@ exec_data_new (void) } static ExecData * -exec_data_clone (ExecData *data, - gboolean preserve_argv) +exec_data_clone (ExecData *data) { if (data == nullptr) return nullptr; @@ -286,8 +285,7 @@ exec_data_clone (ExecData *data, clone->cwd = g_strdup (data->cwd); /* If FDs were passed, cannot repeat argv. Return data only for env and cwd */ - if (!preserve_argv || - data->fd_list != nullptr) { + if (data->fd_list != nullptr) { clone->as_shell = TRUE; return clone; } @@ -937,7 +935,6 @@ terminal_screen_reexec_from_screen (TerminalScreen *screen, g_return_val_if_fail (TERMINAL_IS_SCREEN (parent_screen), FALSE); - terminal_unref_exec_data ExecData* data = exec_data_clone (parent_screen->priv->exec_data, FALSE); gs_free char* cwd = terminal_screen_get_current_dir (parent_screen); _terminal_debug_print (TERMINAL_DEBUG_PROCESSES, @@ -947,7 +944,7 @@ terminal_screen_reexec_from_screen (TerminalScreen *screen, cwd); return terminal_screen_reexec_from_exec_data (screen, - data, + nullptr /* exec data */, nullptr /* envv */, cwd, cancellable, @@ -1753,7 +1750,7 @@ spawn_result_cb (VteTerminal *terminal, } /* Retain info for reexec, if possible */ - ExecData *new_exec_data = exec_data_clone (exec_data, TRUE); + ExecData *new_exec_data = exec_data_clone (exec_data); terminal_screen_clear_exec_data (screen, FALSE); priv->exec_data = new_exec_data; }