Skip to content

Commit 5936757

Browse files
author
Stephan Dilly
committed
output panics for simpler diagnosis
1 parent 35f4555 commit 5936757

File tree

1 file changed

+16
-4
lines changed

1 file changed

+16
-4
lines changed

src/main.rs

+16-4
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,9 @@ fn main() -> Result<()> {
5454
return Ok(());
5555
}
5656

57-
enable_raw_mode()?;
58-
io::stdout().execute(EnterAlternateScreen)?;
57+
setup_terminal()?;
5958
defer! {
60-
io::stdout().execute(LeaveAlternateScreen).unwrap();
61-
disable_raw_mode().unwrap();
59+
shutdown_terminal().expect("shutdown failed");
6260
}
6361

6462
set_panic_handlers();
@@ -118,6 +116,18 @@ fn main() -> Result<()> {
118116
Ok(())
119117
}
120118

119+
fn setup_terminal() -> Result<()> {
120+
enable_raw_mode()?;
121+
io::stdout().execute(EnterAlternateScreen)?;
122+
Ok(())
123+
}
124+
125+
fn shutdown_terminal() -> Result<()> {
126+
io::stdout().execute(LeaveAlternateScreen)?;
127+
disable_raw_mode()?;
128+
Ok(())
129+
}
130+
121131
fn draw<B: Backend>(
122132
terminal: &mut Terminal<B>,
123133
app: &mut App,
@@ -202,6 +212,8 @@ fn set_panic_handlers() {
202212
panic::set_hook(Box::new(|e| {
203213
let backtrace = Backtrace::new();
204214
error!("panic: {:?}\ntrace:\n{:?}", e, backtrace);
215+
shutdown_terminal().expect("shutdown failed inside panic");
216+
eprintln!("panic: {:?}\ntrace:\n{:?}", e, backtrace);
205217
}));
206218

207219
// global threadpool

0 commit comments

Comments
 (0)