| ... | @@ -245,6 +245,7 @@ pub fn appendRemaining( | ... | @@ -245,6 +245,7 @@ pub fn appendRemaining( |
| 245 | list: *std.ArrayListAlignedUnmanaged(u8, alignment), | 245 | list: *std.ArrayListAlignedUnmanaged(u8, alignment), |
| 246 | limit: Limit, | 246 | limit: Limit, |
| 247 | ) LimitedAllocError!void { | 247 | ) LimitedAllocError!void { |
| | 248 | assert(r.buffer.len != 0); // Needed to detect limit exceeded without losing data. |
| 248 | const buffer = r.buffer; | 249 | const buffer = r.buffer; |
| 249 | const buffer_contents = buffer[r.seek..r.end]; | 250 | const buffer_contents = buffer[r.seek..r.end]; |
| 250 | const copy_len = limit.minInt(buffer_contents.len); | 251 | const copy_len = limit.minInt(buffer_contents.len); |
| ... | @@ -1657,11 +1658,12 @@ test "readAlloc when the backing reader provides one byte at a time" { | ... | @@ -1657,11 +1658,12 @@ test "readAlloc when the backing reader provides one byte at a time" { |
| 1657 | } | 1658 | } |
| 1658 | }; | 1659 | }; |
| 1659 | const str = "This is a test"; | 1660 | const str = "This is a test"; |
| | 1661 | var tiny_buffer: [1]u8 = undefined; |
| 1660 | var one_byte_stream: OneByteReader = .{ | 1662 | var one_byte_stream: OneByteReader = .{ |
| 1661 | .str = str, | 1663 | .str = str, |
| 1662 | .i = 0, | 1664 | .i = 0, |
| 1663 | .reader = .{ | 1665 | .reader = .{ |
| 1664 | .buffer = &.{}, | 1666 | .buffer = &tiny_buffer, |
| 1665 | .vtable = &.{ .stream = OneByteReader.stream }, | 1667 | .vtable = &.{ .stream = OneByteReader.stream }, |
| 1666 | .seek = 0, | 1668 | .seek = 0, |
| 1667 | .end = 0, | 1669 | .end = 0, |