Commit c0d85cda53

Rui He <118280419+ruihe774@users.noreply.github.com>
2025-01-30 16:42:15
std.fs.File: limit initial_cap according to max_bytes in readToEndAllocOptions
1 parent b01d6b1
Changed files (1)
lib
std
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();