fix some coverity issues
This commit is contained in:
parent
b417f2ba98
commit
4a304273fd
|
@ -179,6 +179,12 @@ void terminal_size(int* terminal_width, int* terminal_height)
|
||||||
*terminal_height = coninfo.srWindow.Bottom - coninfo.srWindow.Top;
|
*terminal_height = coninfo.srWindow.Bottom - coninfo.srWindow.Top;
|
||||||
#else
|
#else
|
||||||
int tty = open("/dev/tty", O_RDONLY);
|
int tty = open("/dev/tty", O_RDONLY);
|
||||||
|
if (tty < 0)
|
||||||
|
{
|
||||||
|
*terminal_width = 190;
|
||||||
|
*terminal_height = 100;
|
||||||
|
return;
|
||||||
|
}
|
||||||
winsize size;
|
winsize size;
|
||||||
int ret = ioctl(tty, TIOCGWINSZ, reinterpret_cast<char*>(&size));
|
int ret = ioctl(tty, TIOCGWINSZ, reinterpret_cast<char*>(&size));
|
||||||
close(tty);
|
close(tty);
|
||||||
|
|
|
@ -393,7 +393,8 @@ namespace libtorrent
|
||||||
error_code error;
|
error_code error;
|
||||||
};
|
};
|
||||||
void read_piece(int piece);
|
void read_piece(int piece);
|
||||||
void on_disk_read_complete(disk_io_job const* j, peer_request r, read_piece_struct* rp);
|
void on_disk_read_complete(disk_io_job const* j, peer_request r
|
||||||
|
, boost::shared_ptr<read_piece_struct> rp);
|
||||||
|
|
||||||
storage_mode_t storage_mode() const { return (storage_mode_t)m_storage_mode; }
|
storage_mode_t storage_mode() const { return (storage_mode_t)m_storage_mode; }
|
||||||
storage_interface* get_storage()
|
storage_interface* get_storage()
|
||||||
|
|
|
@ -5316,19 +5316,21 @@ namespace libtorrent
|
||||||
TORRENT_ASSERT(is_single_thread());
|
TORRENT_ASSERT(is_single_thread());
|
||||||
shared_ptr<torrent> t = m_torrent.lock();
|
shared_ptr<torrent> t = m_torrent.lock();
|
||||||
|
|
||||||
|
const int tick_interval = (std::max)(1, m_settings.get_int(settings_pack::tick_interval));
|
||||||
|
|
||||||
if (channel == download_channel)
|
if (channel == download_channel)
|
||||||
{
|
{
|
||||||
return (std::max)((std::max)(m_outstanding_bytes
|
return (std::max)((std::max)(m_outstanding_bytes
|
||||||
, m_recv_buffer.packet_bytes_remaining()) + 30
|
, m_recv_buffer.packet_bytes_remaining()) + 30
|
||||||
, int(boost::int64_t(m_statistics.download_rate()) * 2
|
, int(boost::int64_t(m_statistics.download_rate()) * 2
|
||||||
/ (1000 / m_settings.get_int(settings_pack::tick_interval))));
|
/ (1000 / tick_interval)));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return (std::max)((std::max)(m_reading_bytes
|
return (std::max)((std::max)(m_reading_bytes
|
||||||
, m_send_buffer.size())
|
, m_send_buffer.size())
|
||||||
, int((boost::int64_t(m_statistics.upload_rate()) * 2
|
, int((boost::int64_t(m_statistics.upload_rate()) * 2
|
||||||
* m_settings.get_int(settings_pack::tick_interval)) / 1000));
|
* tick_interval) / 1000));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -835,6 +835,8 @@ namespace libtorrent
|
||||||
|
|
||||||
int priority = p.priority(this);
|
int priority = p.priority(this);
|
||||||
TORRENT_ASSERT(priority >= 0);
|
TORRENT_ASSERT(priority >= 0);
|
||||||
|
if (priority < 0) return;
|
||||||
|
|
||||||
if (int(m_priority_boundries.size()) <= priority)
|
if (int(m_priority_boundries.size()) <= priority)
|
||||||
m_priority_boundries.resize(priority + 1, m_pieces.size());
|
m_priority_boundries.resize(priority + 1, m_pieces.size());
|
||||||
|
|
||||||
|
|
|
@ -918,14 +918,22 @@ namespace libtorrent
|
||||||
}
|
}
|
||||||
|
|
||||||
TORRENT_ASSERT(piece >= 0 && piece < m_torrent_file->num_pieces());
|
TORRENT_ASSERT(piece >= 0 && piece < m_torrent_file->num_pieces());
|
||||||
int piece_size = m_torrent_file->piece_size(piece);
|
const int piece_size = m_torrent_file->piece_size(piece);
|
||||||
int blocks_in_piece = (piece_size + block_size() - 1) / block_size();
|
const int blocks_in_piece = (piece_size + block_size() - 1) / block_size();
|
||||||
|
|
||||||
// if blocks_in_piece is 0, rp will leak
|
|
||||||
TORRENT_ASSERT(blocks_in_piece > 0);
|
TORRENT_ASSERT(blocks_in_piece > 0);
|
||||||
TORRENT_ASSERT(piece_size > 0);
|
TORRENT_ASSERT(piece_size > 0);
|
||||||
|
|
||||||
read_piece_struct* rp = new read_piece_struct;
|
if (blocks_in_piece == 0)
|
||||||
|
{
|
||||||
|
// this shouldn't actually happen
|
||||||
|
boost::shared_array<char> buf;
|
||||||
|
m_ses.alerts().emplace_alert<read_piece_alert>(
|
||||||
|
get_handle(), piece, buf, 0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
boost::shared_ptr<read_piece_struct> rp = boost::make_shared<read_piece_struct>();
|
||||||
rp->piece_data.reset(new (std::nothrow) char[piece_size]);
|
rp->piece_data.reset(new (std::nothrow) char[piece_size]);
|
||||||
rp->blocks_left = 0;
|
rp->blocks_left = 0;
|
||||||
rp->fail = false;
|
rp->fail = false;
|
||||||
|
@ -939,7 +947,6 @@ namespace libtorrent
|
||||||
rp->piece_data.reset();
|
rp->piece_data.reset();
|
||||||
m_ses.alerts().emplace_alert<read_piece_alert>(
|
m_ses.alerts().emplace_alert<read_piece_alert>(
|
||||||
get_handle(), r.piece, rp->piece_data, 0);
|
get_handle(), r.piece, rp->piece_data, 0);
|
||||||
delete rp;
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
for (int i = 0; i < blocks_in_piece; ++i, r.start += block_size())
|
for (int i = 0; i < blocks_in_piece; ++i, r.start += block_size())
|
||||||
|
@ -1194,7 +1201,8 @@ namespace libtorrent
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void torrent::on_disk_read_complete(disk_io_job const* j, peer_request r, read_piece_struct* rp)
|
void torrent::on_disk_read_complete(disk_io_job const* j, peer_request r
|
||||||
|
, boost::shared_ptr<read_piece_struct> rp)
|
||||||
{
|
{
|
||||||
// hold a reference until this function returns
|
// hold a reference until this function returns
|
||||||
torrent_ref_holder h(this, "read_piece");
|
torrent_ref_holder h(this, "read_piece");
|
||||||
|
@ -1229,7 +1237,6 @@ namespace libtorrent
|
||||||
m_ses.alerts().emplace_alert<read_piece_alert>(
|
m_ses.alerts().emplace_alert<read_piece_alert>(
|
||||||
get_handle(), r.piece, rp->piece_data, size);
|
get_handle(), r.piece, rp->piece_data, size);
|
||||||
}
|
}
|
||||||
delete rp;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9920,7 +9927,7 @@ namespace libtorrent
|
||||||
int num_downloaded_pieces = (std::max)(m_picker->num_have()
|
int num_downloaded_pieces = (std::max)(m_picker->num_have()
|
||||||
, pieces_in_torrent - m_picker->num_filtered());
|
, pieces_in_torrent - m_picker->num_filtered());
|
||||||
|
|
||||||
if (num_downloaded_pieces * m_torrent_file->piece_length()
|
if (boost::int64_t(num_downloaded_pieces) * m_torrent_file->piece_length()
|
||||||
* settings().get_int(settings_pack::share_mode_target) > m_total_uploaded
|
* settings().get_int(settings_pack::share_mode_target) > m_total_uploaded
|
||||||
&& num_downloaded_pieces > 0)
|
&& num_downloaded_pieces > 0)
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -3323,7 +3323,8 @@ bool utp_socket_impl::incoming_packet(boost::uint8_t const* buf, int size
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void utp_socket_impl::do_ledbat(int acked_bytes, int delay, int in_flight)
|
void utp_socket_impl::do_ledbat(const int acked_bytes, const int delay
|
||||||
|
, const int in_flight)
|
||||||
{
|
{
|
||||||
INVARIANT_CHECK;
|
INVARIANT_CHECK;
|
||||||
|
|
||||||
|
@ -3333,15 +3334,15 @@ void utp_socket_impl::do_ledbat(int acked_bytes, int delay, int in_flight)
|
||||||
TORRENT_ASSERT(in_flight > 0);
|
TORRENT_ASSERT(in_flight > 0);
|
||||||
TORRENT_ASSERT(acked_bytes > 0);
|
TORRENT_ASSERT(acked_bytes > 0);
|
||||||
|
|
||||||
int target_delay = m_sm->target_delay();
|
const int target_delay = (std::max)(1, m_sm->target_delay());
|
||||||
|
|
||||||
// true if the upper layer is pushing enough data down the socket to be
|
// true if the upper layer is pushing enough data down the socket to be
|
||||||
// limited by the cwnd. If this is not the case, we should not adjust cwnd.
|
// limited by the cwnd. If this is not the case, we should not adjust cwnd.
|
||||||
bool cwnd_saturated = (m_bytes_in_flight + acked_bytes + m_mtu > (m_cwnd >> 16));
|
const bool cwnd_saturated = (m_bytes_in_flight + acked_bytes + m_mtu > (m_cwnd >> 16));
|
||||||
|
|
||||||
// all of these are fixed points with 16 bits fraction portion
|
// all of these are fixed points with 16 bits fraction portion
|
||||||
boost::int64_t window_factor = (boost::int64_t(acked_bytes) << 16) / in_flight;
|
const boost::int64_t window_factor = (boost::int64_t(acked_bytes) << 16) / in_flight;
|
||||||
boost::int64_t delay_factor = (boost::int64_t(target_delay - delay) << 16) / target_delay;
|
const boost::int64_t delay_factor = (boost::int64_t(target_delay - delay) << 16) / target_delay;
|
||||||
boost::int64_t scaled_gain;
|
boost::int64_t scaled_gain;
|
||||||
|
|
||||||
if (delay >= target_delay)
|
if (delay >= target_delay)
|
||||||
|
|
Loading…
Reference in New Issue