commit c0d85cda53fd9ea056641d5e91cc8f736b34c0e7 (tree)
parent b01d6b156cf4d273be40a6e6288f4766f71f4a29
Author: Rui He <118280419+ruihe774@users.noreply.github.com>
Date: Thu, 30 Jan 2025 23:42:15 +0800
std.fs.File: limit initial_cap according to max_bytes in readToEndAllocOptions
Diffstat:
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/std/fs/File.zig b/lib/std/fs/File.zig
@@ -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();