fixes to make valgrind happy

This commit is contained in:
Arvid Norberg 2010-12-24 01:22:49 +00:00
parent 3474346a3d
commit 8cec51fc47
3 changed files with 14 additions and 15 deletions

View File

@ -43,11 +43,11 @@ namespace libtorrent
struct TORRENT_EXPORT bitfield struct TORRENT_EXPORT bitfield
{ {
bitfield(): m_bytes(0), m_size(0), m_own(false) {} bitfield(): m_bytes(0), m_size(0), m_own(false) {}
bitfield(int bits): m_bytes(0), m_size(0) bitfield(int bits): m_bytes(0), m_size(0), m_own(false)
{ resize(bits); } { resize(bits); }
bitfield(int bits, bool val): m_bytes(0), m_size(0) bitfield(int bits, bool val): m_bytes(0), m_size(0), m_own(false)
{ resize(bits, val); } { resize(bits, val); }
bitfield(char const* b, int bits): m_bytes(0), m_size(0) bitfield(char const* b, int bits): m_bytes(0), m_size(0), m_own(false)
{ assign(b, bits); } { assign(b, bits); }
bitfield(bitfield const& rhs): m_bytes(0), m_size(0), m_own(false) bitfield(bitfield const& rhs): m_bytes(0), m_size(0), m_own(false)
{ assign(rhs.bytes(), rhs.size()); } { assign(rhs.bytes(), rhs.size()); }

View File

@ -65,7 +65,7 @@ namespace libtorrent
public: public:
enum { size = number_size }; enum { size = number_size };
big_number() {} big_number() { clear(); }
static big_number max() static big_number max()
{ {
@ -101,15 +101,8 @@ namespace libtorrent
std::memcpy(m_number, s.c_str(), sl); std::memcpy(m_number, s.c_str(), sl);
} }
void assign(char const* str) void assign(char const* str) { std::memcpy(m_number, str, size); }
{ void clear() { std::memset(m_number, 0, number_size); }
std::memcpy(m_number, str, size);
}
void clear()
{
std::fill(m_number,m_number+number_size,(const unsigned char)(0));
}
bool is_all_zeros() const bool is_all_zeros() const
{ {

View File

@ -66,6 +66,11 @@ using libtorrent::aux::session_impl;
namespace libtorrent namespace libtorrent
{ {
int round_up8(int v)
{
return ((v & 7) == 0) ? v : v + (8 - (v & 7));
}
// outbound connection // outbound connection
peer_connection::peer_connection( peer_connection::peer_connection(
session_impl& ses session_impl& ses
@ -4630,7 +4635,7 @@ namespace libtorrent
int regular_buffer_size = m_packet_size - m_disk_recv_buffer_size; int regular_buffer_size = m_packet_size - m_disk_recv_buffer_size;
if (int(m_recv_buffer.size()) < regular_buffer_size) if (int(m_recv_buffer.size()) < regular_buffer_size)
m_recv_buffer.resize(regular_buffer_size); m_recv_buffer.resize(round_up8(regular_buffer_size));
boost::array<asio::mutable_buffer, 2> vec; boost::array<asio::mutable_buffer, 2> vec;
int num_bufs = 0; int num_bufs = 0;
@ -4938,7 +4943,8 @@ namespace libtorrent
&& m_recv_pos == 0 && m_recv_pos == 0
&& (m_recv_buffer.capacity() - m_packet_size) > 128) && (m_recv_buffer.capacity() - m_packet_size) > 128)
{ {
buffer(m_packet_size).swap(m_recv_buffer); // round up to an even 8 bytes since that's the RC4 blocksize
buffer(round_up8(m_packet_size)).swap(m_recv_buffer);
} }
if (m_recv_pos >= m_soft_packet_size) m_soft_packet_size = 0; if (m_recv_pos >= m_soft_packet_size) m_soft_packet_size = 0;