diff options
| author | 魏曹先生 <1992414357@qq.com> | 2026-07-18 02:21:19 +0800 |
|---|---|---|
| committer | 魏曹先生 <1992414357@qq.com> | 2026-07-18 02:21:19 +0800 |
| commit | b838e9617ba66542d684b8410e9f0d52ac7ff5e9 (patch) | |
| tree | 76779ea13d1ef7698b67cfdca74e07a086087aef /mingling/src/setups | |
| parent | 6f2053e27a4dda5d6208b27bd652a9e861173e59 (diff) | |
fix(core)!: conditionally override exit code in ExitCodeSetup
Diffstat (limited to 'mingling/src/setups')
| -rw-r--r-- | mingling/src/setups/exit_code.rs | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/mingling/src/setups/exit_code.rs b/mingling/src/setups/exit_code.rs index 025ed8a..6b8a1ef 100644 --- a/mingling/src/setups/exit_code.rs +++ b/mingling/src/setups/exit_code.rs @@ -2,7 +2,7 @@ use std::marker::PhantomData; use mingling_core::{ ProgramCollect, - hook::{ProgramControlUnit, ProgramHook}, + hook::{ProgramControlUnit, ProgramControls, ProgramHook}, setup::ProgramSetup, this, }; @@ -39,7 +39,14 @@ where // Insert hook to override exit code before program ends program.with_hook(ProgramHook::empty().on_finish(|_| { let this = this::<C>().res_or_default::<ResExitCode>(); - ProgramControlUnit::OverrideExitCode(this.exit_code) + let ec = this.exit_code; + + // Only override when ResExitCode has been modified + if ec != 0 { + ProgramControlUnit::OverrideExitCode(this.exit_code).into() + } else { + ProgramControls::Empty + } })); } } |
