Browse Source

Handle empty piece range properly

Related: #12677.
adaptive-webui-19844
Chocobo1 4 years ago
parent
commit
5ca26516eb
No known key found for this signature in database
GPG Key ID: 210D9C873253A68C
  1. 7
      src/base/bittorrent/torrenthandleimpl.cpp

7
src/base/bittorrent/torrenthandleimpl.cpp

@ -2120,7 +2120,7 @@ void TorrentHandleImpl::prioritizeFiles(const QVector<DownloadPriority> &priorit
QVector<qreal> TorrentHandleImpl::availableFileFractions() const QVector<qreal> TorrentHandleImpl::availableFileFractions() const
{ {
const int filesCount = this->filesCount(); const int filesCount = this->filesCount();
if (filesCount < 0) return {}; if (filesCount <= 0) return {};
const QVector<int> piecesAvailability = pieceAvailability(); const QVector<int> piecesAvailability = pieceAvailability();
// libtorrent returns empty array for seeding only torrents // libtorrent returns empty array for seeding only torrents
@ -2136,7 +2136,10 @@ QVector<qreal> TorrentHandleImpl::availableFileFractions() const
for (const int piece : filePieces) for (const int piece : filePieces)
availablePieces += (piecesAvailability[piece] > 0) ? 1 : 0; availablePieces += (piecesAvailability[piece] > 0) ? 1 : 0;
res.push_back(static_cast<qreal>(availablePieces) / filePieces.size()); const qreal availability = filePieces.isEmpty()
? 1 // the file has no pieces, so it is available by default
: static_cast<qreal>(availablePieces) / filePieces.size();
res.push_back(availability);
} }
return res; return res;
} }

Loading…
Cancel
Save