summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCanop <cano.petrole@gmail.com>2021-04-27 17:03:14 +0200
committerCanop <cano.petrole@gmail.com>2021-04-27 17:03:14 +0200
commit0e1ef761cd947bf537d84c3e2d5ae700d73a00ba (patch)
treef99332f0f3d7a0142c2131f51afe54e774b6467e
parent76af65cc0baf8a541205a659774f281fec1b0a16 (diff)
better handling of errors in launching external program non leaving
We were previously not correctly restoring broot's state on failed external programs execution. It should be OK now.
-rw-r--r--src/launchable.rs5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/launchable.rs b/src/launchable.rs
index a4096ae..b26e59f 100644
--- a/src/launchable.rs
+++ b/src/launchable.rs
@@ -153,14 +153,14 @@ impl Launchable {
old_working_dir = std::env::current_dir().ok();
std::env::set_current_dir(working_dir).unwrap();
}
- Command::new(&exe)
+ let exec_res = Command::new(&exe)
.args(args.iter())
.spawn()
.and_then(|mut p| p.wait())
.map_err(|source| ProgramError::LaunchError {
program: exe.clone(),
source,
- })?;
+ });
if let Some(ref mut w) = &mut w {
terminal::enable_raw_mode().unwrap();
if !mouse_capture_disabled {
@@ -173,6 +173,7 @@ impl Launchable {
if let Some(old_working_dir) = old_working_dir {
std::env::set_current_dir(old_working_dir).unwrap();
}
+ exec_res?; // we trigger the error display after restoration
Ok(())
}
Launchable::SystemOpen { path } => {