aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJon Atack <jon@atack.com>2021-09-05 11:32:59 +0200
committerfanquake <fanquake@gmail.com>2022-02-15 09:22:05 +0000
commit7febe4f3c7f482390c4aa6fc528e2ee3fb34b142 (patch)
treedf50bc4374026bf1d6f4c2f18911e045e14cfd6d
parentc671c6f4706d17cccfe5c35950235f8777a7975f (diff)
downloadbitcoin-7febe4f3c7f482390c4aa6fc528e2ee3fb34b142.tar.xz
consensus: don't call GetBlockPos in ReadBlockFromDisk without lock
Github-Pull: #22895 Rebased-From: 350e034e64d175f3db4c85ddca42e76e279912f6
-rw-r--r--src/node/blockstorage.cpp10
1 files changed, 3 insertions, 7 deletions
diff --git a/src/node/blockstorage.cpp b/src/node/blockstorage.cpp
index 0083b74b33..b64fc8d944 100644
--- a/src/node/blockstorage.cpp
+++ b/src/node/blockstorage.cpp
@@ -394,18 +394,14 @@ bool ReadBlockFromDisk(CBlock& block, const FlatFilePos& pos, const Consensus::P
bool ReadBlockFromDisk(CBlock& block, const CBlockIndex* pindex, const Consensus::Params& consensusParams)
{
- FlatFilePos blockPos;
- {
- LOCK(cs_main);
- blockPos = pindex->GetBlockPos();
- }
+ const FlatFilePos block_pos{WITH_LOCK(cs_main, return pindex->GetBlockPos())};
- if (!ReadBlockFromDisk(block, blockPos, consensusParams)) {
+ if (!ReadBlockFromDisk(block, block_pos, consensusParams)) {
return false;
}
if (block.GetHash() != pindex->GetBlockHash()) {
return error("ReadBlockFromDisk(CBlock&, CBlockIndex*): GetHash() doesn't match index for %s at %s",
- pindex->ToString(), pindex->GetBlockPos().ToString());
+ pindex->ToString(), block_pos.ToString());
}
return true;
}