From 4a063b1402eabac0252f7f5216c1d8627ac82ccf Mon Sep 17 00:00:00 2001 From: Rosen Penev Date: Mon, 13 Jan 2025 12:53:03 -0800 Subject: [PATCH] remove VLA Deprecated in C++17. Also cleaned up surrounding code. Signed-off-by: Rosen Penev --- src/torrent/download/resource_manager.cc | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/src/torrent/download/resource_manager.cc b/src/torrent/download/resource_manager.cc index 283aa7a36..b41bf22c4 100644 --- a/src/torrent/download/resource_manager.cc +++ b/src/torrent/download/resource_manager.cc @@ -339,33 +339,26 @@ ResourceManager::balance_unchoked(unsigned int weight, unsigned int max_unchoked // that won't work as they need to choke peers once their priority // is turned off. - choke_group* choke_groups[group_size()]; - std::copy(choke_base_type::begin(), choke_base_type::end(), choke_groups); + auto choke_groups = std::vector(group_size()); + std::copy(choke_base_type::begin(), choke_base_type::end(), std::back_inserter(choke_groups)); // Start with the group requesting fewest slots (relative to weight) // so that we only need to iterate through the list once allocating // slots. There will be no slots left unallocated unless all groups // have reached max slots allowed. - choke_group** group_first = choke_groups; - choke_group** group_last = choke_groups + group_size(); - if (is_up) { - std::sort(group_first, group_last, std::bind(std::less(), - std::bind(&choke_group::up_requested, std::placeholders::_1), - std::bind(&choke_group::up_requested, std::placeholders::_2))); + std::sort(choke_groups.begin(), choke_groups.end(), [](auto lhs, auto rhs) { return lhs->up_requested() < rhs->up_requested(); }); LT_LOG_THIS("balancing upload unchoked slots; current_unchoked:%u change:%i max_unchoked:%u", m_currentlyUploadUnchoked, change, max_unchoked); } else { - std::sort(group_first, group_last, std::bind(std::less(), - std::bind(&choke_group::down_requested, std::placeholders::_1), - std::bind(&choke_group::down_requested, std::placeholders::_2))); + std::sort(choke_groups.begin(), choke_groups.end(), [](auto lhs, auto rhs) { return lhs->down_requested() < rhs->down_requested(); }); LT_LOG_THIS("balancing download unchoked slots; current_unchoked:%u change:%i max_unchoked:%u", m_currentlyDownloadUnchoked, change, max_unchoked); } - while (group_first != group_last) { - choke_queue* cm = is_up ? (*group_first)->up_queue() : (*group_first)->down_queue(); + for (const auto& group : choke_groups) { + choke_queue* cm = is_up ? group->up_queue() : group->down_queue(); // change += cm->cycle(weight != 0 ? (quota * itr->priority()) / weight : 0); change += cm->cycle(weight != 0 ? quota / weight : 0); @@ -373,7 +366,6 @@ ResourceManager::balance_unchoked(unsigned int weight, unsigned int max_unchoked quota -= cm->size_unchoked(); // weight -= itr->priority(); weight--; - group_first++; } if (weight != 0)