]> Sergey Matveev's repositories - btrtrc.git/commitdiff
storage: Fix io.EOF on short piece files
authorMatt Joiner <anacrolix@gmail.com>
Sat, 2 Apr 2016 05:57:22 +0000 (16:57 +1100)
committerMatt Joiner <anacrolix@gmail.com>
Sat, 2 Apr 2016 05:57:22 +0000 (16:57 +1100)
storage/piece_file.go

index 82dfbdcfeaefe33ecf5d41bba8ec61b44795c7bb..c9fc3c2187f6327bceabf5980590c1522e19ed3b 100644 (file)
@@ -72,7 +72,12 @@ func (me pieceFileTorrentStoragePiece) ReadAt(b []byte, off int64) (n int, err e
                }
        }
        defer f.Close()
-       return f.ReadAt(b, off)
+       n, err = f.ReadAt(b, off)
+       off += int64(n)
+       if err == io.EOF && off < me.p.Length() {
+               err = io.ErrUnexpectedEOF
+       }
+       return
 }
 
 func (me pieceFileTorrentStoragePiece) WriteAt(b []byte, off int64) (n int, err error) {