From 1c48142b15d46b803daeb55c3c09ebbc1d894eb9 Mon Sep 17 00:00:00 2001 From: Haydon Ryan Date: Wed, 2 Sep 2026 17:40:12 -0500 Subject: [PATCH] tail: avoid copying each chunk buffer --- src/uu/tail/src/chunks.rs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/uu/tail/src/chunks.rs b/src/uu/tail/src/chunks.rs index acf6b0a286a..be7f2f9f132 100644 --- a/src/uu/tail/src/chunks.rs +++ b/src/uu/tail/src/chunks.rs @@ -289,14 +289,14 @@ impl BytesChunkBuffer { // fill chunks with all bytes from reader and reuse already instantiated chunks if possible while chunk.fill(reader)?.is_some() { self.bytes += chunk.bytes as u64; - self.chunks.push_back(chunk.clone()); + self.chunks.push_back(chunk); let first = &self.chunks[0]; if self.bytes - first.bytes as u64 > self.num_print { chunk = self.chunks.pop_front().unwrap(); self.bytes -= chunk.bytes as u64; } else { - *chunk = BytesChunk::new(); + chunk = Box::new(BytesChunk::new()); } } @@ -563,15 +563,14 @@ impl LinesChunkBuffer { while chunk.fill(reader)?.is_some() { self.lines += chunk.lines as u64; - self.chunks.push_back(chunk.clone()); + self.chunks.push_back(chunk); let first = &self.chunks[0]; if self.lines - first.lines as u64 > self.num_print { chunk = self.chunks.pop_front().unwrap(); - self.lines -= chunk.lines as u64; } else { - *chunk = LinesChunk::new(self.delimiter); + chunk = Box::new(LinesChunk::new(self.delimiter)); } }