diff options
Diffstat (limited to 'src/pane.rs')
| -rw-r--r-- | src/pane.rs | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/pane.rs b/src/pane.rs index bd3f7ffd..7340629c 100644 --- a/src/pane.rs +++ b/src/pane.rs @@ -3013,12 +3013,12 @@ impl PaneRuntime { .or_else(|| crate::platform::foreground_process_group_id(pid)); let leader_cwd = foreground_pgid.and_then(absolute_process_cwd); - if leader_cwd.as_ref() == shell_cwd.as_ref() { - foreground_member_cwd_different_from_shell(pid, shell_cwd.as_ref()).or(leader_cwd) - } else { - leader_cwd - .or_else(|| foreground_member_cwd_different_from_shell(pid, shell_cwd.as_ref())) - } + // The group leader's cwd is authoritative (issue #3270): a helper + // process that chdirs elsewhere inside the same foreground group + // must not override it. Scan other members only when the leader's + // cwd cannot be read at all. + leader_cwd + .or_else(|| foreground_member_cwd_different_from_shell(pid, shell_cwd.as_ref())) } #[cfg(not(unix))] |
