aboutsummaryrefslogtreecommitdiff
path: root/mingling_core/src/program.rs
diff options
context:
space:
mode:
Diffstat (limited to 'mingling_core/src/program.rs')
-rw-r--r--mingling_core/src/program.rs20
1 files changed, 20 insertions, 0 deletions
diff --git a/mingling_core/src/program.rs b/mingling_core/src/program.rs
index e7e9ec0..a00b2c7 100644
--- a/mingling_core/src/program.rs
+++ b/mingling_core/src/program.rs
@@ -193,6 +193,16 @@ where
.unwrap()
.downcast_ref::<Program<C>>()
.unwrap();
+
+ #[cfg(not(panic = "abort"))]
+ if program.stdout_setting.silence_panic {
+ std::panic::set_hook(Box::new(|_| {}));
+ }
+
+ #[cfg(panic = "abort")]
+ return Ok(f(program));
+
+ #[cfg(not(panic = "abort"))]
match std::panic::catch_unwind(std::panic::AssertUnwindSafe(|| f(program))) {
Ok(fut) => Ok(fut.await),
Err(panic_info) => {
@@ -294,6 +304,16 @@ where
.unwrap()
.downcast_ref::<Program<C>>()
.unwrap();
+
+ #[cfg(not(panic = "abort"))]
+ if program.stdout_setting.silence_panic {
+ std::panic::set_hook(Box::new(|_| {}));
+ }
+
+ #[cfg(panic = "abort")]
+ return Ok(f(program));
+
+ #[cfg(not(panic = "abort"))]
match std::panic::catch_unwind(std::panic::AssertUnwindSafe(|| f(program))) {
Ok(result) => Ok(result),
Err(panic_info) => {