diff --git a/src/bench/merkle_root.cpp b/src/bench/merkle_root.cpp index 0f59ccf81c4..17f7fa8691c 100644 --- a/src/bench/merkle_root.cpp +++ b/src/bench/merkle_root.cpp @@ -25,8 +25,8 @@ static void MerkleRoot(benchmark::Bench& bench) bench.name(mutate ? "MerkleRootWithMutation" : "MerkleRoot").batch(hashes.size()).unit("leaf").run([&] { std::vector leaves; leaves.reserve((hashes.size() + 1) & ~1ULL); // capacity rounded up to even - for (size_t s = 0; s < hashes.size(); s++) { - leaves.push_back(hashes[s]); + for (const auto& hash : hashes) { + leaves.push_back(hash); } bool mutated{false}; diff --git a/src/test/merkle_tests.cpp b/src/test/merkle_tests.cpp index 347261df275..dc4791419e7 100644 --- a/src/test/merkle_tests.cpp +++ b/src/test/merkle_tests.cpp @@ -243,7 +243,8 @@ BOOST_AUTO_TEST_CASE(merkle_test_BlockWitness) uint256 blockWitness = BlockWitnessMerkleRoot(block); std::vector hashes; - hashes.resize(vtx_count); // Note: leaving odd count to exercise old behavior + hashes.resize(vtx_count); // Odd count exercises leaf duplication in ComputeMerkleRoot (which can append one extra hash). + hashes[0] = uint256::ZERO; // The witness hash of the coinbase is 0. for (size_t pos{1}; pos < vtx_count; ++pos) { hashes[pos] = block.vtx[pos]->GetWitnessHash().ToUint256(); }