authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-07-16 13:39:42-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-07-16 17:20:03-07:00
log1f93f6195805b39f698df124ad1e1495201624f2
tree6d2dc00448cbef511b24a8f7eabf2c9e067f700f
parent73cfba4d0d0ed00de8f5fbb83257d703ba284d61

std.zig.readSourceFileToEndAlloc: add file size heuristic


1 files changed, 5 insertions(+), 0 deletions(-)

lib/std/zig.zig+5
...@@ -534,6 +534,11 @@ pub fn readSourceFileToEndAlloc(gpa: Allocator, file_reader: *std.fs.File.Reader...@@ -534,6 +534,11 @@ pub fn readSourceFileToEndAlloc(gpa: Allocator, file_reader: *std.fs.File.Reader
534 var buffer: std.ArrayListAlignedUnmanaged(u8, .@"2") = .empty;534 var buffer: std.ArrayListAlignedUnmanaged(u8, .@"2") = .empty;
535 defer buffer.deinit(gpa);535 defer buffer.deinit(gpa);
536536
537 if (file_reader.getSize()) |size| {
538 const casted_size = std.math.cast(u32, size) orelse return error.StreamTooLong;
539 try buffer.ensureTotalCapacityPrecise(gpa, casted_size);
540 } else |_| {}
541
537 try file_reader.interface.appendRemaining(gpa, .@"2", &buffer, .limited(max_src_size));542 try file_reader.interface.appendRemaining(gpa, .@"2", &buffer, .limited(max_src_size));
538543
539 // Detect unsupported file types with their Byte Order Mark544 // Detect unsupported file types with their Byte Order Mark