File tree 1 file changed +8
-8
lines changed
1 file changed +8
-8
lines changed Original file line number Diff line number Diff line change @@ -661,7 +661,6 @@ const MsfStream = struct {
661
661
}
662
662
663
663
fn read (self : * MsfStream , buffer : []u8 ) ! usize {
664
-
665
664
var block_id = @intCast (usize , self .pos / self .block_size );
666
665
var block = self .blocks [block_id ];
667
666
var offset = self .pos % self .block_size ;
@@ -671,11 +670,12 @@ const MsfStream = struct {
671
670
const in = & file_stream .stream ;
672
671
673
672
var size : usize = 0 ;
674
- for (buffer ) | * byte | {
675
- byte .* = try in .readByte ();
676
-
677
- offset += 1 ;
678
- size += 1 ;
673
+ var rem_buffer = buffer ;
674
+ while (size < buffer .len ) {
675
+ const size_to_read = math .min (self .block_size - offset , rem_buffer .len );
676
+ size += try in .read (rem_buffer [0.. size_to_read ]);
677
+ rem_buffer = buffer [size .. ];
678
+ offset += size_to_read ;
679
679
680
680
// If we're at the end of a block, go to the next one.
681
681
if (offset == self .block_size ) {
@@ -686,8 +686,8 @@ const MsfStream = struct {
686
686
}
687
687
}
688
688
689
- self .pos += size ;
690
- return size ;
689
+ self .pos += buffer . len ;
690
+ return buffer . len ;
691
691
}
692
692
693
693
fn seekBy (self : * MsfStream , len : i64 ) ! void {
You can’t perform that action at this time.
0 commit comments