aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Dong <contact@carldong.me>2022-03-15 19:19:58 -0400
committerCarl Dong <contact@carldong.me>2022-03-15 19:42:43 -0400
commit28ba0313eac37e4a900b7e97af7169ce999c4024 (patch)
tree0e082ed3f96cbbefa53c23c1812d272d5a4862e9 /src
parent12eb05df63f930969115af6dc66e2e5d02f2a517 (diff)
Add and use CBlockIndexHeightOnlyComparator
...also use std::sort for clarity
Diffstat (limited to 'src')
-rw-r--r--src/node/blockstorage.cpp11
-rw-r--r--src/node/blockstorage.h5
-rw-r--r--src/validation.cpp17
3 files changed, 20 insertions, 13 deletions
diff --git a/src/node/blockstorage.cpp b/src/node/blockstorage.cpp
index bbdd240692..73bc4e0072 100644
--- a/src/node/blockstorage.cpp
+++ b/src/node/blockstorage.cpp
@@ -47,6 +47,11 @@ bool CBlockIndexWorkComparator::operator()(const CBlockIndex* pa, const CBlockIn
return false;
}
+bool CBlockIndexHeightOnlyComparator::operator()(const CBlockIndex* pa, const CBlockIndex* pb) const
+{
+ return pa->nHeight < pb->nHeight;
+}
+
static FILE* OpenUndoFile(const FlatFilePos& pos, bool fReadOnly = false);
static FlatFileSeq BlockFileSeq();
static FlatFileSeq UndoFileSeq();
@@ -242,10 +247,8 @@ bool BlockManager::LoadBlockIndex(const Consensus::Params& consensus_params)
for (auto& [_, block_index] : m_block_index) {
vSortedByHeight.push_back(&block_index);
}
- sort(vSortedByHeight.begin(), vSortedByHeight.end(),
- [](const CBlockIndex* pa, const CBlockIndex* pb) {
- return pa->nHeight < pb->nHeight;
- });
+ std::sort(vSortedByHeight.begin(), vSortedByHeight.end(),
+ CBlockIndexHeightOnlyComparator());
for (CBlockIndex* pindex : vSortedByHeight) {
if (ShutdownRequested()) return false;
diff --git a/src/node/blockstorage.h b/src/node/blockstorage.h
index d230bdd24b..0fd87ddaf1 100644
--- a/src/node/blockstorage.h
+++ b/src/node/blockstorage.h
@@ -62,6 +62,11 @@ struct CBlockIndexWorkComparator {
bool operator()(const CBlockIndex* pa, const CBlockIndex* pb) const;
};
+struct CBlockIndexHeightOnlyComparator {
+ /* Only compares the height of two block indices, doesn't try to tie-break */
+ bool operator()(const CBlockIndex* pa, const CBlockIndex* pb) const;
+};
+
/**
* Maintains a tree of blocks (stored in `m_block_index`) which is consulted
* to determine where the most-work tip is.
diff --git a/src/validation.cpp b/src/validation.cpp
index eebb6773d4..2828b4ae98 100644
--- a/src/validation.cpp
+++ b/src/validation.cpp
@@ -65,21 +65,22 @@
using node::BLOCKFILE_CHUNK_SIZE;
using node::BlockManager;
using node::BlockMap;
+using node::CBlockIndexHeightOnlyComparator;
using node::CBlockIndexWorkComparator;
using node::CCoinsStats;
using node::CoinStatsHashType;
+using node::fHavePruned;
+using node::fImporting;
+using node::fPruneMode;
+using node::fReindex;
using node::GetUTXOStats;
+using node::nPruneTarget;
using node::OpenBlockFile;
using node::ReadBlockFromDisk;
using node::SnapshotMetadata;
using node::UNDOFILE_CHUNK_SIZE;
using node::UndoReadFromDisk;
using node::UnlinkPrunedFiles;
-using node::fHavePruned;
-using node::fImporting;
-using node::fPruneMode;
-using node::fReindex;
-using node::nPruneTarget;
#define MICRO 0.000001
#define MILLI 0.001
@@ -4073,10 +4074,8 @@ bool ChainstateManager::LoadBlockIndex()
for (auto& [_, block_index] : m_blockman.m_block_index) {
vSortedByHeight.push_back(&block_index);
}
- sort(vSortedByHeight.begin(), vSortedByHeight.end(),
- [](const CBlockIndex* pa, const CBlockIndex* pb) {
- return pa->nHeight < pb->nHeight;
- });
+ std::sort(vSortedByHeight.begin(), vSortedByHeight.end(),
+ CBlockIndexHeightOnlyComparator());
// Find start of assumed-valid region.
int first_assumed_valid_height = std::numeric_limits<int>::max();