From 418f5b7692f3e487c875a4b6252e04e8b00a3130 Mon Sep 17 00:00:00 2001 From: Michael Debertol Date: Sat, 31 Jul 2021 20:19:11 +0200 Subject: [PATCH] sort: handle empty merge inputs --- src/uu/sort/src/merge.rs | 14 ++++++++------ tests/by-util/test_sort.rs | 9 +++++++++ tests/fixtures/sort/empty.txt | 0 3 files changed, 17 insertions(+), 6 deletions(-) create mode 100644 tests/fixtures/sort/empty.txt diff --git a/src/uu/sort/src/merge.rs b/src/uu/sort/src/merge.rs index 4a45028f7..a5ac9411b 100644 --- a/src/uu/sort/src/merge.rs +++ b/src/uu/sort/src/merge.rs @@ -194,12 +194,14 @@ fn merge_without_limit>( let mut mergeable_files = vec![]; for (file_number, receiver) in loaded_receivers.into_iter().enumerate() { - mergeable_files.push(MergeableFile { - current_chunk: Rc::new(receiver.recv().unwrap()), - file_number, - line_idx: 0, - receiver, - }) + if let Ok(chunk) = receiver.recv() { + mergeable_files.push(MergeableFile { + current_chunk: Rc::new(chunk), + file_number, + line_idx: 0, + receiver, + }) + } } FileMerger { diff --git a/tests/by-util/test_sort.rs b/tests/by-util/test_sort.rs index 36bed4b94..8e9861a39 100644 --- a/tests/by-util/test_sort.rs +++ b/tests/by-util/test_sort.rs @@ -1039,3 +1039,12 @@ fn test_output_device() { .pipe_in("input") .succeeds(); } + +#[test] +fn test_merge_empty_input() { + new_ucmd!() + .args(&["-m", "empty.txt"]) + .succeeds() + .no_stderr() + .no_stdout(); +} diff --git a/tests/fixtures/sort/empty.txt b/tests/fixtures/sort/empty.txt new file mode 100644 index 000000000..e69de29bb