make receive_buffer() not return a range exceeding the actual buffer
This commit is contained in:
parent
c3695d9fbb
commit
f979f7a77b
|
@ -590,6 +590,8 @@ namespace libtorrent
|
||||||
bool packet_finished() const
|
bool packet_finished() const
|
||||||
{ return m_packet_size <= m_recv_pos; }
|
{ return m_packet_size <= m_recv_pos; }
|
||||||
|
|
||||||
|
int receive_pos() const { return m_recv_pos; }
|
||||||
|
|
||||||
#ifdef TORRENT_DEBUG
|
#ifdef TORRENT_DEBUG
|
||||||
bool piece_failed;
|
bool piece_failed;
|
||||||
#endif
|
#endif
|
||||||
|
@ -649,9 +651,9 @@ namespace libtorrent
|
||||||
{
|
{
|
||||||
TORRENT_ASSERT(!m_disk_recv_buffer);
|
TORRENT_ASSERT(!m_disk_recv_buffer);
|
||||||
TORRENT_ASSERT(m_disk_recv_buffer_size == 0);
|
TORRENT_ASSERT(m_disk_recv_buffer_size == 0);
|
||||||
if (m_recv_buffer.empty()) return buffer::interval(0,0);
|
int rcv_pos = (std::min)(m_recv_pos, int(m_recv_buffer.size()));
|
||||||
return buffer::interval(&m_recv_buffer[0]
|
return buffer::interval(&m_recv_buffer[0]
|
||||||
, &m_recv_buffer[0] + m_recv_pos);
|
, &m_recv_buffer[0] + rcv_pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::pair<buffer::interval, buffer::interval> wr_recv_buffers(int bytes);
|
std::pair<buffer::interval, buffer::interval> wr_recv_buffers(int bytes);
|
||||||
|
@ -659,9 +661,9 @@ namespace libtorrent
|
||||||
|
|
||||||
buffer::const_interval receive_buffer() const
|
buffer::const_interval receive_buffer() const
|
||||||
{
|
{
|
||||||
if (m_recv_buffer.empty()) return buffer::const_interval(0,0);
|
int rcv_pos = (std::min)(m_recv_pos, int(m_recv_buffer.size()));
|
||||||
return buffer::const_interval(&m_recv_buffer[0]
|
return buffer::const_interval(&m_recv_buffer[0]
|
||||||
, &m_recv_buffer[0] + m_recv_pos);
|
, &m_recv_buffer[0] + rcv_pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool allocate_disk_receive_buffer(int disk_buffer_size);
|
bool allocate_disk_receive_buffer(int disk_buffer_size);
|
||||||
|
|
|
@ -1082,7 +1082,7 @@ namespace libtorrent
|
||||||
TORRENT_ASSERT(received > 0);
|
TORRENT_ASSERT(received > 0);
|
||||||
|
|
||||||
buffer::const_interval recv_buffer = receive_buffer();
|
buffer::const_interval recv_buffer = receive_buffer();
|
||||||
int recv_pos = recv_buffer.end - recv_buffer.begin;
|
int recv_pos = receive_pos(); // recv_buffer.end - recv_buffer.begin;
|
||||||
|
|
||||||
boost::shared_ptr<torrent> t = associated_torrent().lock();
|
boost::shared_ptr<torrent> t = associated_torrent().lock();
|
||||||
TORRENT_ASSERT(t);
|
TORRENT_ASSERT(t);
|
||||||
|
|
Loading…
Reference in New Issue