authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-07-11 10:03:54-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-07-14 00:14:21-07:00
log5496901e713dc1a75de289d7e8e3c79e7fee9510
tree269aa691017a66c9256f914b90308447a9a3a77c
parent093fe02b75a4a28f7faecea63ce2ae9639ef5b66

std.Io.Reader.appendRemaining: add missing assert


2 files changed, 5 insertions(+), 2 deletions(-)

lib/std/Build/Cache.zig+2-1
......@@ -661,7 +661,8 @@ pub const Manifest = struct {
661661 } {
662662 const gpa = self.cache.gpa;
663663 const input_file_count = self.files.entries.len;
664 var manifest_reader = self.manifest_file.?.reader(&.{}); // Reads positionally from zero.
664 var tiny_buffer: [1]u8 = undefined; // allows allocRemaining to detect limit exceeded
665 var manifest_reader = self.manifest_file.?.reader(&tiny_buffer); // Reads positionally from zero.
665666 const limit: std.io.Limit = .limited(manifest_file_size_max);
666667 const file_contents = manifest_reader.interface.allocRemaining(gpa, limit) catch |err| switch (err) {
667668 error.OutOfMemory => return error.OutOfMemory,
lib/std/Io/Reader.zig+3-1
......@@ -245,6 +245,7 @@ pub fn appendRemaining(
245245 list: *std.ArrayListAlignedUnmanaged(u8, alignment),
246246 limit: Limit,
247247) LimitedAllocError!void {
248 assert(r.buffer.len != 0); // Needed to detect limit exceeded without losing data.
248249 const buffer = r.buffer;
249250 const buffer_contents = buffer[r.seek..r.end];
250251 const copy_len = limit.minInt(buffer_contents.len);
......@@ -1657,11 +1658,12 @@ test "readAlloc when the backing reader provides one byte at a time" {
16571658 }
16581659 };
16591660 const str = "This is a test";
1661 var tiny_buffer: [1]u8 = undefined;
16601662 var one_byte_stream: OneByteReader = .{
16611663 .str = str,
16621664 .i = 0,
16631665 .reader = .{
1664 .buffer = &.{},
1666 .buffer = &tiny_buffer,
16651667 .vtable = &.{ .stream = OneByteReader.stream },
16661668 .seek = 0,
16671669 .end = 0,