std.mem.readVarInt: assert ReturnType is large enough (#20946)

Fixes #20521
This commit is contained in:
poypoyan 2024-10-12 03:32:10 +08:00 committed by GitHub
parent 13fb68c064
commit 0367f18cb9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1602,6 +1602,7 @@ test containsAtLeast {
/// T specifies the return type, which must be large enough to store
/// the result.
pub fn readVarInt(comptime ReturnType: type, bytes: []const u8, endian: Endian) ReturnType {
assert(@typeInfo(ReturnType).int.bits >= bytes.len * 8);
const bits = @typeInfo(ReturnType).int.bits;
const signedness = @typeInfo(ReturnType).int.signedness;
const WorkType = std.meta.Int(signedness, @max(16, bits));