Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 54d193a3df |
+5
-1
@@ -1,6 +1,7 @@
|
||||
package squashfs
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"io"
|
||||
|
||||
"github.com/CalebQ42/squashfs/internal/toreader"
|
||||
@@ -12,8 +13,11 @@ type fragEntry struct {
|
||||
_ uint32
|
||||
}
|
||||
|
||||
func (r Reader) fragReader(index uint32) (io.Reader, error) {
|
||||
func (r Reader) fragReader(index uint32, fragSize uint32) (io.Reader, error) {
|
||||
realSize := r.fragEntries[index].Size &^ (1 << 24)
|
||||
if realSize == 0 {
|
||||
return bytes.NewReader(make([]byte, fragSize)), nil
|
||||
}
|
||||
rdr := io.LimitReader(toreader.NewReader(r.r, int64(r.fragEntries[index].Start)), int64(realSize))
|
||||
if realSize != r.fragEntries[index].Size {
|
||||
return rdr, nil
|
||||
|
||||
+2
-2
@@ -59,7 +59,7 @@ func (r Reader) getReaders(i inode.Inode) (full *data.FullReader, rdr *data.Read
|
||||
if fragInd != 0xFFFFFFFF {
|
||||
full.AddFragment(func() (io.Reader, error) {
|
||||
var fragRdr io.Reader
|
||||
fragRdr, err = r.fragReader(fragInd)
|
||||
fragRdr, err = r.fragReader(fragInd, fragSize)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -75,7 +75,7 @@ func (r Reader) getReaders(i inode.Inode) (full *data.FullReader, rdr *data.Read
|
||||
return fragRdr, nil
|
||||
})
|
||||
var fragRdr io.Reader
|
||||
fragRdr, err = r.fragReader(fragInd)
|
||||
fragRdr, err = r.fragReader(fragInd, fragSize)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user