diff options
author | Joe Wilm <joe@jwilm.com> | 2016-06-07 21:12:21 -0700 |
---|---|---|
committer | Joe Wilm <joe@jwilm.com> | 2016-06-07 21:12:21 -0700 |
commit | 6f3e890197b84bfecc99cc25e68f02e2af4f20e0 (patch) | |
tree | 330b63b5dbaf057e58082152aff00bcb85fb6f82 | |
parent | 06451fbab1b59116c8e0634472fb9e35fdaee48e (diff) | |
download | r-alacritty-6f3e890197b84bfecc99cc25e68f02e2af4f20e0.tar.gz r-alacritty-6f3e890197b84bfecc99cc25e68f02e2af4f20e0.tar.bz2 r-alacritty-6f3e890197b84bfecc99cc25e68f02e2af4f20e0.zip |
Handle pty char recv errors
The main loop is now exitted if the char sender hangs up.
-rw-r--r-- | src/main.rs | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/main.rs b/src/main.rs index faf397c5..98daddf1 100644 --- a/src/main.rs +++ b/src/main.rs @@ -180,8 +180,12 @@ fn main() { } } - while let Ok(c) = chars_rx.try_recv() { - pty_parser.advance(&mut terminal, c); + loop { + match chars_rx.try_recv() { + Ok(c) => pty_parser.advance(&mut terminal, c), + Err(TryRecvError::Disconnected) => break 'main_loop, + Err(TryRecvError::Empty) => break, + } } unsafe { @@ -210,5 +214,7 @@ fn main() { window.swap_buffers().unwrap(); } + + // TODO handle child cleanup } |