]> Sergey Matveev's repositories - btrtrc.git/blobdiff - file.go
Fix file piece index offset calculations
[btrtrc.git] / file.go
diff --git a/file.go b/file.go
index 7cc0ad64bf5d67f520ba37863f8c7d368fb78b13..5983b855e1d46f470b8b804aac05a1dea333c423 100644 (file)
--- a/file.go
+++ b/file.go
@@ -121,7 +121,7 @@ func (f *File) SetPriority(prio piecePriority) {
                return
        }
        f.prio = prio
-       f.t.updatePiecePriorities(f.firstPieceIndex().Int(), f.lastPieceIndex().Int()+1)
+       f.t.updatePiecePriorities(f.firstPieceIndex().Int(), f.endPieceIndex().Int())
 }
 
 // Returns the priority per File.SetPriority.
@@ -132,9 +132,15 @@ func (f *File) Priority() piecePriority {
 }
 
 func (f *File) firstPieceIndex() pwp.Integer {
+       if f.t.usualPieceSize() == 0 {
+               return 0
+       }
        return pwp.Integer(f.offset / int64(f.t.usualPieceSize()))
 }
 
-func (f *File) lastPieceIndex() pwp.Integer {
-       return pwp.Integer((f.offset + f.length) / int64(f.t.usualPieceSize()))
+func (f *File) endPieceIndex() pwp.Integer {
+       if f.t.usualPieceSize() == 0 {
+               return 0
+       }
+       return pwp.Integer((f.offset+f.length-1)/int64(f.t.usualPieceSize())) + 1
 }