refactor for more modern struct initialization and use of api

This commit is contained in:
Alden Torres 2016-12-11 20:24:26 -05:00 committed by Arvid Norberg
parent ca07ee83a3
commit a05f0ba8a4
9 changed files with 29 additions and 41 deletions

View File

@ -174,8 +174,7 @@ TORRENT_EXPORT void print_backtrace(char* out, int len, int max_depth
int size = 0; int size = 0;
std::array<void*, 50> stack; std::array<void*, 50> stack;
STACKFRAME64 stack_frame; STACKFRAME64 stack_frame = {};
memset(&stack_frame, 0, sizeof(stack_frame));
#if defined(_WIN64) #if defined(_WIN64)
int const machine_type = IMAGE_FILE_MACHINE_AMD64; int const machine_type = IMAGE_FILE_MACHINE_AMD64;
stack_frame.AddrPC.Offset = context_record.Rip; stack_frame.AddrPC.Offset = context_record.Rip;

View File

@ -697,8 +697,7 @@ namespace libtorrent
// we push it into the stack so that we know where to fill // we push it into the stack so that we know where to fill
// in the next_node field once we pop this node off the stack. // in the next_node field once we pop this node off the stack.
// i.e. get to the node following the dictionary in the buffer // i.e. get to the node following the dictionary in the buffer
ret.m_tokens.push_back(bdecode_token(start - orig_start ret.m_tokens.push_back({start - orig_start, bdecode_token::dict});
, bdecode_token::dict));
++start; ++start;
break; break;
case 'l': case 'l':
@ -706,8 +705,7 @@ namespace libtorrent
// we push it into the stack so that we know where to fill // we push it into the stack so that we know where to fill
// in the next_node field once we pop this node off the stack. // in the next_node field once we pop this node off the stack.
// i.e. get to the node following the list in the buffer // i.e. get to the node following the list in the buffer
ret.m_tokens.push_back(bdecode_token(start - orig_start ret.m_tokens.push_back({start - orig_start, bdecode_token::list});
, bdecode_token::list));
++start; ++start;
break; break;
case 'i': case 'i':
@ -725,8 +723,8 @@ namespace libtorrent
start = int_start; start = int_start;
TORRENT_FAIL_BDECODE(e); TORRENT_FAIL_BDECODE(e);
} }
ret.m_tokens.push_back(bdecode_token(int_start - orig_start ret.m_tokens.push_back({int_start - orig_start
, 1, bdecode_token::integer, 1)); , 1, bdecode_token::integer, 1});
TORRENT_ASSERT(*start == 'e'); TORRENT_ASSERT(*start == 'e');
// skip 'e' // skip 'e'
@ -749,8 +747,7 @@ namespace libtorrent
} }
// insert the end-of-sequence token // insert the end-of-sequence token
ret.m_tokens.push_back(bdecode_token(start - orig_start, 1 ret.m_tokens.push_back({start - orig_start, 1, bdecode_token::end});
, bdecode_token::end));
// and back-patch the start of this sequence with the offset // and back-patch the start of this sequence with the offset
// to the next token we'll insert // to the next token we'll insert
@ -798,8 +795,8 @@ namespace libtorrent
if (start - str_start - 2 > detail::bdecode_token::max_header) if (start - str_start - 2 > detail::bdecode_token::max_header)
TORRENT_FAIL_BDECODE(bdecode_errors::limit_exceeded); TORRENT_FAIL_BDECODE(bdecode_errors::limit_exceeded);
ret.m_tokens.push_back(bdecode_token(str_start - orig_start ret.m_tokens.push_back({str_start - orig_start
, 1, bdecode_token::string, std::uint8_t(start - str_start))); , 1, bdecode_token::string, std::uint8_t(start - str_start)});
start += len; start += len;
break; break;
} }
@ -831,25 +828,22 @@ done:
&& stack[sp].state == 1) && stack[sp].state == 1)
{ {
// insert an empty dictionary as the value // insert an empty dictionary as the value
ret.m_tokens.push_back(bdecode_token(start - orig_start ret.m_tokens.push_back({start - orig_start, 2, bdecode_token::dict});
, 2, bdecode_token::dict)); ret.m_tokens.push_back({start - orig_start, bdecode_token::end});
ret.m_tokens.push_back(bdecode_token(start - orig_start
, bdecode_token::end));
} }
int const top = stack[sp].token; int const top = stack[sp].token;
TORRENT_ASSERT(ret.m_tokens.size() - top <= bdecode_token::max_next_item); TORRENT_ASSERT(ret.m_tokens.size() - top <= bdecode_token::max_next_item);
ret.m_tokens[top].next_item = std::uint32_t(ret.m_tokens.size() - top); ret.m_tokens[top].next_item = std::uint32_t(ret.m_tokens.size() - top);
ret.m_tokens.push_back(bdecode_token(start - orig_start, 1, bdecode_token::end)); ret.m_tokens.push_back({start - orig_start, 1, bdecode_token::end});
} }
ret.m_tokens.push_back(bdecode_token(start - orig_start, 0 ret.m_tokens.push_back({start - orig_start, 0, bdecode_token::end});
, bdecode_token::end));
ret.m_token_idx = 0; ret.m_token_idx = 0;
ret.m_buffer = orig_start; ret.m_buffer = orig_start;
ret.m_buffer_size = int(start - orig_start); ret.m_buffer_size = int(start - orig_start);
ret.m_root_tokens = &ret.m_tokens[0]; ret.m_root_tokens = ret.m_tokens.data();
return ec ? -1 : 0; return ec ? -1 : 0;
} }

View File

@ -319,7 +319,7 @@ namespace libtorrent
for (auto const p : peers) for (auto const p : peers)
{ {
TORRENT_ASSERT(p); TORRENT_ASSERT(p != nullptr);
if (p->est_reciprocation_rate() > upload_capacity_left) break; if (p->est_reciprocation_rate() > upload_capacity_left) break;

View File

@ -1252,7 +1252,7 @@ namespace libtorrent
std::unique_lock<std::mutex> l2(m_cache_mutex); std::unique_lock<std::mutex> l2(m_cache_mutex);
pe = m_disk_cache.find_piece(j); pe = m_disk_cache.find_piece(j);
if (pe) maybe_issue_queued_read_jobs(pe, completed_jobs); if (pe != nullptr) maybe_issue_queued_read_jobs(pe, completed_jobs);
return s; return s;
} }

View File

@ -232,8 +232,7 @@ namespace libtorrent { namespace
#endif #endif
if_indextoname(if_index, rt_info->name); if_indextoname(if_index, rt_info->name);
ifreq req; ifreq req = {};
memset(&req, 0, sizeof(req));
if_indextoname(if_index, req.ifr_name); if_indextoname(if_index, req.ifr_name);
ioctl(s, siocgifmtu, &req); ioctl(s, siocgifmtu, &req);
rt_info->mtu = req.ifr_mtu; rt_info->mtu = req.ifr_mtu;
@ -290,8 +289,7 @@ int _System __libsocket_sysctl(int* mib, u_int namelen, void *oldp, size_t *oldl
if_indextoname(rtm->rtm_index, rt_info->name); if_indextoname(rtm->rtm_index, rt_info->name);
// TODO: get the MTU (and other interesting metrics) from the rt_msghdr instead // TODO: get the MTU (and other interesting metrics) from the rt_msghdr instead
ifreq req; ifreq req = {};
memset(&req, 0, sizeof(req));
if_indextoname(rtm->rtm_index, req.ifr_name); if_indextoname(rtm->rtm_index, req.ifr_name);
// ignore errors here. This is best-effort // ignore errors here. This is best-effort
@ -478,8 +476,7 @@ namespace libtorrent
ip_interface iface; ip_interface iface;
if (iface_from_ifaddrs(ifa, iface)) if (iface_from_ifaddrs(ifa, iface))
{ {
ifreq req; ifreq req = {};
std::memset(&req, 0, sizeof(req));
// -1 to leave a 0-terminator // -1 to leave a 0-terminator
std::strncpy(req.ifr_name, iface.name, IF_NAMESIZE - 1); std::strncpy(req.ifr_name, iface.name, IF_NAMESIZE - 1);
@ -539,8 +536,7 @@ namespace libtorrent
iface.interface_address = sockaddr_to_address(&item.ifr_addr); iface.interface_address = sockaddr_to_address(&item.ifr_addr);
strcpy(iface.name, item.ifr_name); strcpy(iface.name, item.ifr_name);
ifreq req; ifreq req = {};
memset(&req, 0, sizeof(req));
// -1 to leave a 0-terminator // -1 to leave a 0-terminator
strncpy(req.ifr_name, item.ifr_name, IF_NAMESIZE - 1); strncpy(req.ifr_name, item.ifr_name, IF_NAMESIZE - 1);
if (ioctl(s, siocgifmtu, &req) < 0) if (ioctl(s, siocgifmtu, &req) < 0)
@ -555,7 +551,7 @@ namespace libtorrent
iface.mtu = req.ifr_metric; // according to tcp/ip reference iface.mtu = req.ifr_metric; // according to tcp/ip reference
#endif #endif
memset(&req, 0, sizeof(req)); std::memset(&req, 0, sizeof(req));
strncpy(req.ifr_name, item.ifr_name, IF_NAMESIZE - 1); strncpy(req.ifr_name, item.ifr_name, IF_NAMESIZE - 1);
if (ioctl(s, SIOCGIFNETMASK, &req) < 0) if (ioctl(s, SIOCGIFNETMASK, &req) < 0)
{ {
@ -1093,8 +1089,7 @@ namespace libtorrent
int seq = 0; int seq = 0;
char msg[BUFSIZE]; char msg[BUFSIZE] = {};
memset(msg, 0, BUFSIZE);
nlmsghdr* nl_msg = reinterpret_cast<nlmsghdr*>(msg); nlmsghdr* nl_msg = reinterpret_cast<nlmsghdr*>(msg);
nl_msg->nlmsg_len = NLMSG_LENGTH(sizeof(rtmsg)); nl_msg->nlmsg_len = NLMSG_LENGTH(sizeof(rtmsg));

View File

@ -819,6 +819,7 @@ namespace libtorrent
int file_storage::file_flags(int index) const int file_storage::file_flags(int index) const
{ {
TORRENT_ASSERT_PRECOND(index >= 0 && index < int(m_files.size()));
internal_file_entry const& fe = m_files[index]; internal_file_entry const& fe = m_files[index];
return (fe.pad_file ? flag_pad_file : 0) return (fe.pad_file ? flag_pad_file : 0)
| (fe.hidden_attribute ? flag_hidden : 0) | (fe.hidden_attribute ? flag_hidden : 0)
@ -828,6 +829,7 @@ namespace libtorrent
bool file_storage::file_absolute_path(int index) const bool file_storage::file_absolute_path(int index) const
{ {
TORRENT_ASSERT_PRECOND(index >= 0 && index < int(m_files.size()));
internal_file_entry const& fe = m_files[index]; internal_file_entry const& fe = m_files[index];
return fe.path_index == -2; return fe.path_index == -2;
} }

View File

@ -4175,7 +4175,7 @@ namespace aux {
// all the other ones. // all the other ones.
for (auto p : peers) for (auto p : peers)
{ {
TORRENT_ASSERT(p); TORRENT_ASSERT(p != nullptr);
TORRENT_ASSERT(!p->ignore_unchoke_slots()); TORRENT_ASSERT(!p->ignore_unchoke_slots());
// this will update the m_uploaded_at_last_unchoke // this will update the m_uploaded_at_last_unchoke

View File

@ -454,10 +454,8 @@ namespace libtorrent
void udp_tracker_connection::update_transaction_id() void udp_tracker_connection::update_transaction_id()
{ {
std::uint32_t new_tid;
// don't use 0, because that has special meaning (unintialized) // don't use 0, because that has special meaning (unintialized)
new_tid = random(0xfffffffe) + 1; std::uint32_t const new_tid = random(0xfffffffe) + 1;
if (m_transaction_id != 0) if (m_transaction_id != 0)
m_man.update_transaction_id(shared_from_this(), new_tid); m_man.update_transaction_id(shared_from_this(), new_tid);

View File

@ -650,7 +650,7 @@ void web_peer_connection::handle_redirect(int const bytes_left)
if (web->have_files.get_bit(file_index) == false) if (web->have_files.get_bit(file_index) == false)
{ {
web->have_files.set_bit(file_index); web->have_files.set_bit(file_index);
if (web->peer_info.connection) if (web->peer_info.connection != nullptr)
{ {
peer_connection* pc = static_cast<peer_connection*>(web->peer_info.connection); peer_connection* pc = static_cast<peer_connection*>(web->peer_info.connection);
@ -1029,7 +1029,7 @@ void web_peer_connection::incoming_payload(char const* buf, int len)
// to not exceed the size of the next bittorrent request to be delivered. // to not exceed the size of the next bittorrent request to be delivered.
// m_piece can only hold the response for a single BT request at a time // m_piece can only hold the response for a single BT request at a time
m_piece.resize(piece_size + copy_size); m_piece.resize(piece_size + copy_size);
std::memcpy(&m_piece[0] + piece_size, buf, copy_size); std::memcpy(m_piece.data() + piece_size, buf, copy_size);
len -= copy_size; len -= copy_size;
buf += copy_size; buf += copy_size;
@ -1055,7 +1055,7 @@ void web_peer_connection::incoming_payload(char const* buf, int len)
peer_request const front_request_copy = front_request; peer_request const front_request_copy = front_request;
m_requests.pop_front(); m_requests.pop_front();
incoming_piece(front_request_copy, &m_piece[0]); incoming_piece(front_request_copy, m_piece.data());
m_piece.clear(); m_piece.clear();
} }
@ -1108,7 +1108,7 @@ void web_peer_connection::maybe_harvest_piece()
#endif #endif
m_requests.pop_front(); m_requests.pop_front();
incoming_piece(front_request, &m_piece[0]); incoming_piece(front_request, m_piece.data());
m_piece.clear(); m_piece.clear();
} }