merged fix from RC_0_16

This commit is contained in:
Arvid Norberg
2013-02-28 03:29:33 +00:00
parent 6ff833390e
commit 96c62bc4b8
3 changed files with 50 additions and 4 deletions

View File

@@ -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;
}