From ffd071f55821f70fbfc59bab172ae07eaf7cde23 Mon Sep 17 00:00:00 2001 From: Alex Kladov Date: Sat, 14 Sep 2024 02:42:11 +0100 Subject: [PATCH] fix IB in fifoToOwnedArrayList memcpy requires non-overlapping arguments. fifo.realign() handles this case correctly and tries to provide an optimized implementation. This probably wasn't hit in practice, as, in a typical usage, fifo's head is not advanced. --- lib/std/process/Child.zig | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/std/process/Child.zig b/lib/std/process/Child.zig index 3a54ede2ad..bd0a91ce77 100644 --- a/lib/std/process/Child.zig +++ b/lib/std/process/Child.zig @@ -316,9 +316,7 @@ pub const RunResult = struct { }; fn fifoToOwnedArrayList(fifo: *std.io.PollFifo) std.ArrayList(u8) { - if (fifo.head > 0) { - @memcpy(fifo.buf[0..fifo.count], fifo.buf[fifo.head..][0..fifo.count]); - } + if (fifo.head != 0) fifo.realign(); const result = std.ArrayList(u8){ .items = fifo.buf[0..fifo.count], .capacity = fifo.buf.len,