@@ -608,8 +608,8 @@ pub const PackageManifest = struct {
608
608
alignment : usize ,
609
609
};
610
610
var data : [fields .len ]Data = undefined ;
611
- for (fields , 0 .. ) | field_info , i | {
612
- data [ i ] = .{
611
+ for (fields , & data ) | field_info , * dat | {
612
+ dat .* = .{
613
613
.size = @sizeOf (field_info .type ),
614
614
.name = field_info .name ,
615
615
.alignment = if (@sizeOf (field_info .type ) == 0 ) 1 else field_info .alignment ,
@@ -623,9 +623,9 @@ pub const PackageManifest = struct {
623
623
std .sort .pdq (Data , & data , {}, Sort .lessThan );
624
624
var sizes_bytes : [fields .len ]usize = undefined ;
625
625
var names : [fields .len ][]const u8 = undefined ;
626
- for (data , 0 .. ) | elem , i | {
627
- sizes_bytes [ i ] = elem .size ;
628
- names [ i ] = elem .name ;
626
+ for (data , & sizes_bytes , & names ) | elem , * size_ , * name_ | {
627
+ size_ .* = elem .size ;
628
+ name_ .* = elem .name ;
629
629
}
630
630
break :blk .{
631
631
.bytes = sizes_bytes ,
@@ -659,7 +659,11 @@ pub const PackageManifest = struct {
659
659
}
660
660
661
661
stream .pos += Aligner .skipAmount (Type , stream .pos );
662
- const result_bytes = stream .buffer [stream .pos .. ][0.. byte_len ];
662
+ const remaining = stream .buffer [@min (stream .pos , stream .buffer .len ).. ];
663
+ if (remaining .len < byte_len ) {
664
+ return error .BufferTooSmall ;
665
+ }
666
+ const result_bytes = remaining [0.. byte_len ];
663
667
const result = @as ([* ]const Type , @ptrCast (@alignCast (result_bytes .ptr )))[0 .. result_bytes .len / @sizeOf (Type )];
664
668
stream .pos += result_bytes .len ;
665
669
return result ;
0 commit comments