Skip to content

Commit

Permalink
fix: terminal freezing on shell_insert_output
Browse files Browse the repository at this point in the history
This bug occurs on `shell_insert_output` and `shell_append_output`
commands.

The previous implementation would create a child process using the Rust
stdlib's `Command` builder. However, when nothing should be piped in
from the editor, the default value for `stdin` would be used. According
to the Rust stdlib documentation that is `Stdio::inherit` which will
make the child process inherit the parent process' stdin. This would
cause the terminal to freeze.

This change will set the child process' stdin to `Stdio::null` whenever
it doesn't pipe it. In the `if` statement where this change was made
there was an extra condition for windows that I am not sure if would
require some special treatment.
  • Loading branch information
GabrielDertoni authored and the-mikedavis committed Oct 26, 2022
1 parent c47ca33 commit 9fae4b8
Showing 1 changed file with 2 additions and 0 deletions.
2 changes: 2 additions & 0 deletions helix-term/src/commands.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4665,6 +4665,8 @@ fn shell_impl(

if input.is_some() || cfg!(windows) {
process.stdin(Stdio::piped());
} else {
process.stdin(Stdio::null());
}

let mut process = match process.spawn() {
Expand Down

0 comments on commit 9fae4b8

Please sign in to comment.