authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-07-17 09:33:25-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-07-17 09:33:25-07:00
log155ab56cc63d775cca77d7bedbcac6ee65558818
treef00931ca6eb57e94e35662ad25f062094dfd6a81
parent5784500572e3d12b0342cc5b09210c1d1f49edc5

std.zig.readSourceFileToEndAlloc: avoid resizing

+1 on the ensure total capacity to account for the fact that we add a null byte before returning. thanks matklad

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

lib/std/zig.zig+2-1
...@@ -536,7 +536,8 @@ pub fn readSourceFileToEndAlloc(gpa: Allocator, file_reader: *std.fs.File.Reader...@@ -536,7 +536,8 @@ pub fn readSourceFileToEndAlloc(gpa: Allocator, file_reader: *std.fs.File.Reader
536536
537 if (file_reader.getSize()) |size| {537 if (file_reader.getSize()) |size| {
538 const casted_size = std.math.cast(u32, size) orelse return error.StreamTooLong;538 const casted_size = std.math.cast(u32, size) orelse return error.StreamTooLong;
539 try buffer.ensureTotalCapacityPrecise(gpa, casted_size);539 // +1 to avoid resizing for the null byte added in toOwnedSliceSentinel below.
540 try buffer.ensureTotalCapacityPrecise(gpa, casted_size + 1);
540 } else |_| {}541 } else |_| {}
541542
542 try file_reader.interface.appendRemaining(gpa, .@"2", &buffer, .limited(max_src_size));543 try file_reader.interface.appendRemaining(gpa, .@"2", &buffer, .limited(max_src_size));