merged fix from RC_0_16
This commit is contained in:
@@ -283,12 +283,32 @@ namespace libtorrent
|
||||
{
|
||||
TORRENT_ASSERT(file_index < num_files());
|
||||
TORRENT_ASSERT(file_index >= 0);
|
||||
size_type offset = file_offset + this->file_offset(file_index);
|
||||
|
||||
peer_request ret;
|
||||
ret.piece = int(offset / piece_length());
|
||||
ret.start = int(offset % piece_length());
|
||||
ret.length = size;
|
||||
if (file_index < 0 || file_index >= num_files())
|
||||
{
|
||||
ret.piece = m_num_pieces;
|
||||
ret.start = 0;
|
||||
ret.length = 0;
|
||||
return ret;
|
||||
}
|
||||
|
||||
size_type offset = file_offset + this->file_offset(file_index);
|
||||
|
||||
if (offset >= total_size())
|
||||
{
|
||||
ret.piece = m_num_pieces;
|
||||
ret.start = 0;
|
||||
ret.length = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
ret.piece = int(offset / piece_length());
|
||||
ret.start = int(offset % piece_length());
|
||||
ret.length = size;
|
||||
if (offset + size > total_size())
|
||||
ret.length = total_size() - offset;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user