diff --git a/src/net_processing.cpp b/src/net_processing.cpp index 61b8a4ecd85..0b6d8fa742a 100644 --- a/src/net_processing.cpp +++ b/src/net_processing.cpp @@ -1907,11 +1907,13 @@ std::vector PeerManagerImpl::AbortPrivateBroadcast(const uint25 void PeerManagerImpl::AddToCompactExtraTransactions(const CTransactionRef& tx) { - if (m_opts.max_extra_txs <= 0) - return; - if (!vExtraTxnForCompact.size()) - vExtraTxnForCompact.resize(m_opts.max_extra_txs); - vExtraTxnForCompact[vExtraTxnForCompactIt] = std::make_pair(tx->GetWitnessHash(), tx); + if (m_opts.max_extra_txs == 0) return; + if (vExtraTxnForCompact.size() < m_opts.max_extra_txs) { + if (vExtraTxnForCompact.empty()) vExtraTxnForCompact.reserve(m_opts.max_extra_txs); + vExtraTxnForCompact.emplace_back(tx->GetWitnessHash(), tx); + } else { + vExtraTxnForCompact[vExtraTxnForCompactIt] = std::make_pair(tx->GetWitnessHash(), tx); + } vExtraTxnForCompactIt = (vExtraTxnForCompactIt + 1) % m_opts.max_extra_txs; }