Skip to content

Commit 30a12a8

Browse files
majectymergify[bot]
authored andcommitted
Extract panic_message function in the panic_hook
1 parent eda15d0 commit 30a12a8

File tree

1 file changed

+17
-13
lines changed

1 file changed

+17
-13
lines changed

util/panic_hook/src/lib.rs

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
extern crate backtrace;
2020

2121
use backtrace::Backtrace;
22-
use std::io::{self, Write};
2322
use std::panic::{self, PanicInfo};
2423
use std::thread;
2524

@@ -35,6 +34,12 @@ This is a bug. Please report it at:
3534
";
3635

3736
fn panic_hook(info: &PanicInfo) {
37+
let message = panic_message(info);
38+
eprintln!("{}", message);
39+
exit_on_debug_mode();
40+
}
41+
42+
fn panic_message(info: &PanicInfo) -> String {
3843
let location = info.location();
3944
let file = location.as_ref().map(|l| l.file()).unwrap_or("<unknown>");
4045
let line = location.as_ref().map(|l| l.line()).unwrap_or(0);
@@ -52,18 +57,17 @@ fn panic_hook(info: &PanicInfo) {
5257

5358
let backtrace = Backtrace::new();
5459

55-
let mut stderr = io::stderr();
56-
57-
let _ = writeln!(stderr);
58-
let _ = writeln!(stderr, "====================");
59-
let _ = writeln!(stderr);
60-
let _ = writeln!(stderr, "{:?}", backtrace);
61-
let _ = writeln!(stderr);
62-
let _ = writeln!(stderr, "Thread '{}' panicked at '{}', {}:{}", name, msg, file, line);
63-
64-
let _ = writeln!(stderr, "{}", ABOUT_PANIC);
65-
66-
exit_on_debug_mode();
60+
let lines = [
61+
"".to_string(),
62+
"====================".to_string(),
63+
"".to_string(),
64+
format!("{:?}", backtrace),
65+
"".to_string(),
66+
format!("Thread '{}' panicked at '{}', {}:{}", name, msg, file, line),
67+
ABOUT_PANIC.to_string(),
68+
];
69+
70+
lines.join("\n")
6771
}
6872

6973
#[cfg(debug_assertions)]

0 commit comments

Comments
 (0)