From 47c49735fc7cee62bd28454aa2827db34b798d29 Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Thu, 20 May 2021 20:24:34 +1000 Subject: [PATCH] Fix race in piece availability runs --- torrent.go | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/torrent.go b/torrent.go index e500a47d..41460412 100644 --- a/torrent.go +++ b/torrent.go @@ -18,13 +18,6 @@ import ( "time" "unsafe" - "github.com/anacrolix/multiless" - "github.com/anacrolix/torrent/common" - "github.com/anacrolix/torrent/segments" - "github.com/anacrolix/torrent/webseed" - "github.com/davecgh/go-spew/spew" - "github.com/pion/datachannel" - "github.com/anacrolix/dht/v2" "github.com/anacrolix/log" "github.com/anacrolix/missinggo" @@ -34,12 +27,18 @@ import ( "github.com/anacrolix/missinggo/slices" "github.com/anacrolix/missinggo/v2/bitmap" "github.com/anacrolix/missinggo/v2/prioritybitmap" + "github.com/anacrolix/multiless" + "github.com/davecgh/go-spew/spew" + "github.com/pion/datachannel" "github.com/anacrolix/torrent/bencode" + "github.com/anacrolix/torrent/common" "github.com/anacrolix/torrent/metainfo" pp "github.com/anacrolix/torrent/peer_protocol" + "github.com/anacrolix/torrent/segments" "github.com/anacrolix/torrent/storage" "github.com/anacrolix/torrent/tracker" + "github.com/anacrolix/torrent/webseed" "github.com/anacrolix/torrent/webtorrent" ) @@ -574,8 +573,8 @@ func (t *Torrent) pieceAvailabilityRuns() (ret []pieceAvailabilityRun) { rle := missinggo.NewRunLengthEncoder(func(el interface{}, count uint64) { ret = append(ret, pieceAvailabilityRun{availability: el.(int64), count: int(count)}) }) - for _, p := range t.pieces { - rle.Append(p.availability, 1) + for i := range t.pieces { + rle.Append(t.pieces[i].availability, 1) } rle.Flush() return -- 2.48.1