aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoe Wilm <joe@jwilm.com>2016-06-07 21:12:21 -0700
committerJoe Wilm <joe@jwilm.com>2016-06-07 21:12:21 -0700
commit6f3e890197b84bfecc99cc25e68f02e2af4f20e0 (patch)
tree330b63b5dbaf057e58082152aff00bcb85fb6f82
parent06451fbab1b59116c8e0634472fb9e35fdaee48e (diff)
downloadr-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.rs10
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
}