From b6f4243fa7fcb655ddca1561cf31388f04531dba Mon Sep 17 00:00:00 2001 From: Jacob Greenfield Date: Thu, 25 Sep 2025 19:16:34 -0400 Subject: [PATCH] sort: fix logic for inserting newline between files --- src/uu/sort/src/chunks.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/uu/sort/src/chunks.rs b/src/uu/sort/src/chunks.rs index 934a20a66..b8e9d1b56 100644 --- a/src/uu/sort/src/chunks.rs +++ b/src/uu/sort/src/chunks.rs @@ -259,7 +259,7 @@ fn read_to_buffer( separator: u8, ) -> UResult<(usize, bool)> { let mut read_target = &mut buffer[start_offset..]; - let mut last_file_target_size = read_target.len(); + let mut last_file_empty = true; loop { match file.read(read_target) { Ok(0) => { @@ -295,7 +295,7 @@ fn read_to_buffer( } else { // This file has been fully read. let mut leftover_len = read_target.len(); - if last_file_target_size != leftover_len { + if !last_file_empty { // The file was not empty. let read_len = buffer.len() - leftover_len; if buffer[read_len - 1] != separator { @@ -308,7 +308,7 @@ fn read_to_buffer( } if let Some(next_file) = next_files.next() { // There is another file. - last_file_target_size = leftover_len; + last_file_empty = true; *file = next_file?; } else { // This was the last file. @@ -319,6 +319,7 @@ fn read_to_buffer( } Ok(n) => { read_target = &mut read_target[n..]; + last_file_empty = false; } Err(e) if e.kind() == ErrorKind::Interrupted => { // retry