From b2fa188029eb9d1450ab83053700995fc938d160 Mon Sep 17 00:00:00 2001 From: sharkdp Date: Tue, 27 Oct 2020 20:26:34 +0100 Subject: [PATCH] Avoid panic when sending errors after receiver shutdown fixes #678 --- CHANGELOG.md | 1 + src/walk.rs | 30 +++++++++++++++++++----------- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 605e280..4eaf010 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ ## Bugfixes +- Avoid panic when performing limited searches in directories with restricted permissions, see #678 - Invalid numeric command-line arguments are silently ignored, see #675 - Disable jemalloc on Android, see #662 diff --git a/src/walk.rs b/src/walk.rs index 1061d66..456b717 100644 --- a/src/walk.rs +++ b/src/walk.rs @@ -358,19 +358,27 @@ fn spawn_senders( DirEntry::BrokenSymlink(path) } _ => { - tx_thread - .send(WorkerResult::Error(ignore::Error::WithPath { - path, - err: inner_err, - })) - .unwrap(); - return ignore::WalkState::Continue; + match tx_thread.send(WorkerResult::Error(ignore::Error::WithPath { + path, + err: inner_err, + })) { + Ok(_) => { + return ignore::WalkState::Continue; + } + Err(_) => { + return ignore::WalkState::Quit; + } + } + } + }, + Err(err) => match tx_thread.send(WorkerResult::Error(err)) { + Ok(_) => { + return ignore::WalkState::Continue; + } + Err(_) => { + return ignore::WalkState::Quit; } }, - Err(err) => { - tx_thread.send(WorkerResult::Error(err)).unwrap(); - return ignore::WalkState::Continue; - } }; if let Some(min_depth) = config.min_depth {