From be8018656eea7592466ea845699c3b562d2fa380 Mon Sep 17 00:00:00 2001 From: Dima Gerasimov Date: Sun, 24 May 2026 21:49:48 +0100 Subject: [PATCH] sort: fix incorrect sort ordering with long line inputs The issue is that in `chunks.rs`, `sep_iter` is relative to `search_start`. But the returned value needs to be absolute position relative to the `buffer`. --- src/uu/sort/src/chunks.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/uu/sort/src/chunks.rs b/src/uu/sort/src/chunks.rs index 62fb9fe4e..a465deb44 100644 --- a/src/uu/sort/src/chunks.rs +++ b/src/uu/sort/src/chunks.rs @@ -380,14 +380,15 @@ fn read_to_buffer( } } + let search_start = newline_search_offset; let mut sep_iter = - memchr_iter(separator, &buffer[newline_search_offset..buffer.len()]).rev(); + memchr_iter(separator, &buffer[search_start..buffer.len()]).rev(); newline_search_offset = buffer.len(); if let Some(last_line_end) = sep_iter.next() { if found_newline || sep_iter.next().is_some() { // We read enough lines. // We want to include the separator here, because it shouldn't be carried over. - return Ok((last_line_end + 1, true)); + return Ok((search_start + last_line_end + 1, true)); } found_newline = true; }