aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-07-10 20:28:22 +0200
committerDimitri Sokolyuk <demon@dim13.org>2016-07-10 20:28:22 +0200
commitf5293d65083b5b9e68b0690f59555c9b34512a69 (patch)
treed27a33a462e3be3a6ccb0e995c07d29a52a5af92
parent5858cd9bd82a23e502bcdd11be9a1ecd5c6ec574 (diff)
ReadAt
-rw-r--r--meta/info.go12
1 files changed, 7 insertions, 5 deletions
diff --git a/meta/info.go b/meta/info.go
index 9dd1178..5ec35a7 100644
--- a/meta/info.go
+++ b/meta/info.go
@@ -124,16 +124,18 @@ func (i Info) ReadAt(b []byte, off int64) (n int, err error) {
flen := i.Files[n].Length
- if int64(len(b)) <= i.Files[n].Length {
+ if int64(len(b))+foff <= flen {
return fd.ReadAt(b, foff)
}
- nn, err := fd.ReadAt(b[:flen], foff)
+ end := flen + foff
+
+ done, err := fd.ReadAt(b[:end], foff)
if err != nil {
- return nn, err
+ return done, err
}
- nnn, err := i.ReadAt(b[flen:], foff+flen)
- return nn + nnn, err
+ next, err := i.ReadAt(b[end:], end)
+ return done + next, err
}
func (i Info) String() string {