diff --git a/src/shell/subproc.zig b/src/shell/subproc.zig index a5011db5d7..c8a9d6b69f 100644 --- a/src/shell/subproc.zig +++ b/src/shell/subproc.zig @@ -722,8 +722,10 @@ pub const PipeReader = struct { }, .array_buffer => { const array_buf_slice = this.array_buffer.buf.slice(); - if (array_buf_slice.len - this.array_buffer.i < bytes.len) return; - @memcpy(array_buf_slice[this.array_buffer.i .. this.array_buffer.i + bytes.len], bytes); + // TODO: We should probably throw error here? + if (this.array_buffer.i >= array_buf_slice.len) return; + const len = @min(array_buf_slice.len - this.array_buffer.i, bytes.len); + @memcpy(array_buf_slice[this.array_buffer.i .. this.array_buffer.i + len], bytes[0..len]); }, } } diff --git a/test/js/bun/shell/bunshell.test.ts b/test/js/bun/shell/bunshell.test.ts index f079b90c5b..26fd3fb118 100644 --- a/test/js/bun/shell/bunshell.test.ts +++ b/test/js/bun/shell/bunshell.test.ts @@ -446,7 +446,7 @@ describe("bunshell", () => { }); test("syntax edgecase", async () => { - const buffer = new Uint8Array(8192); + const buffer = new Uint8Array(1 << 20); const shellProc = await $`FOO=bar BUN_TEST_VAR=1 ${BUN} -e "console.log(JSON.stringify(process.env))"> ${buffer}`; const str = stringifyBuffer(buffer);