terminal: Properly kill child process on terminal exit (#41562)

Lukas Wirth created

Release Notes:

- Fixed terminal processes occasionally leaking

Co-authored by: Jakub <jakub@zed.dev>

Change summary

crates/terminal/src/terminal.rs | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

Detailed changes

crates/terminal/src/terminal.rs 🔗

@@ -2241,7 +2241,8 @@ unsafe fn append_text_to_term(term: &mut Term<ZedListener>, text_lines: &[&str])
 
 impl Drop for Terminal {
     fn drop(&mut self) {
-        if let TerminalType::Pty { pty_tx, .. } = &self.terminal_type {
+        if let TerminalType::Pty { pty_tx, info } = &mut self.terminal_type {
+            info.kill_current_process();
             pty_tx.0.send(Msg::Shutdown).ok();
         }
     }