std.fs.File: limit initial_cap according to max_bytes in readToEndAllocOptions

This commit is contained in:
Rui He
2025-01-30 23:42:15 +08:00
committed by GitHub
parent b01d6b156c
commit c0d85cda53

View File

@@ -1156,7 +1156,7 @@ pub fn readToEndAllocOptions(
// The file size returned by stat is used as hint to set the buffer
// size. If the reported size is zero, as it happens on Linux for files
// in /proc, a small buffer is allocated instead.
const initial_cap = (if (size > 0) size else 1024) + @intFromBool(optional_sentinel != null);
const initial_cap = @min((if (size > 0) size else 1024), max_bytes) + @intFromBool(optional_sentinel != null);
var array_list = try std.ArrayListAligned(u8, alignment).initCapacity(allocator, initial_cap);
defer array_list.deinit();