]> Sergey Matveev's repositories - btrtrc.git/commitdiff
Fix #33.
authorMatt Joiner <anacrolix@gmail.com>
Tue, 20 Oct 2015 06:53:12 +0000 (17:53 +1100)
committerMatt Joiner <anacrolix@gmail.com>
Tue, 20 Oct 2015 06:53:12 +0000 (17:53 +1100)
data/file/file.go
torrent.go

index a24f4ebef2ad2934671b3cd9ea1cca296d92b407..4725de74220a7bb139d44148a908e20689f2f6f2 100644 (file)
@@ -109,18 +109,25 @@ func (me data) WriteSectionTo(w io.Writer, off, n int64) (written int64, err err
                if err != nil {
                        return
                }
-               n1, err = io.Copy(w, io.NewSectionReader(f, off, n1))
+               var w1 int64
+               w1, err = io.Copy(w, io.NewSectionReader(f, off, n1))
                f.Close()
-               if err != nil {
+               written += w1
+               if w1 != n1 {
+                       if err == nil || err == io.EOF {
+                               err = io.ErrUnexpectedEOF
+                       }
                        return
+               } else {
+                       err = nil
                }
-               written += n1
                off = 0
                n -= n1
                if n == 0 {
-                       break
+                       return
                }
        }
+       err = io.EOF
        return
 }
 
index e1ad41cadda0d919e6471f6d124fa14fe1bbf5c7..7d3e235d34e9538d83a0027ac7c5749239926d7f 100644 (file)
@@ -673,7 +673,7 @@ func (t *torrent) hashPiece(piece pp.Integer) (ps pieceSum) {
                return
        }
        if n != pl {
-               panic("lame")
+               panic(fmt.Sprintf("%T: %d != %d", t.data, n, pl))
        }
        missinggo.CopyExact(ps[:], hash.Sum(nil))
        return