mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-04-29 23:09:44 -04:00
Replace pindex pointer with block reference
pindex can not be nullptr, so document that, and clear it up in the next commit.
This commit is contained in:
parent
facdb8b331
commit
fa3f74a40e
1 changed files with 8 additions and 7 deletions
|
@ -722,14 +722,15 @@ static bool WriteBlockToDisk(const CBlock& block, FlatFilePos& pos, const CMessa
|
||||||
|
|
||||||
bool BlockManager::WriteUndoDataForBlock(const CBlockUndo& blockundo, BlockValidationState& state, CBlockIndex* pindex, const CChainParams& chainparams)
|
bool BlockManager::WriteUndoDataForBlock(const CBlockUndo& blockundo, BlockValidationState& state, CBlockIndex* pindex, const CChainParams& chainparams)
|
||||||
{
|
{
|
||||||
|
auto& block{*pindex};
|
||||||
AssertLockHeld(::cs_main);
|
AssertLockHeld(::cs_main);
|
||||||
// Write undo information to disk
|
// Write undo information to disk
|
||||||
if (pindex->GetUndoPos().IsNull()) {
|
if (block.GetUndoPos().IsNull()) {
|
||||||
FlatFilePos _pos;
|
FlatFilePos _pos;
|
||||||
if (!FindUndoPos(state, pindex->nFile, _pos, ::GetSerializeSize(blockundo, CLIENT_VERSION) + 40)) {
|
if (!FindUndoPos(state, block.nFile, _pos, ::GetSerializeSize(blockundo, CLIENT_VERSION) + 40)) {
|
||||||
return error("ConnectBlock(): FindUndoPos failed");
|
return error("ConnectBlock(): FindUndoPos failed");
|
||||||
}
|
}
|
||||||
if (!UndoWriteToDisk(blockundo, _pos, pindex->pprev->GetBlockHash(), GetParams().MessageStart())) {
|
if (!UndoWriteToDisk(blockundo, _pos, block.pprev->GetBlockHash(), GetParams().MessageStart())) {
|
||||||
return AbortNode(state, "Failed to write undo data");
|
return AbortNode(state, "Failed to write undo data");
|
||||||
}
|
}
|
||||||
// rev files are written in block height order, whereas blk files are written as blocks come in (often out of order)
|
// rev files are written in block height order, whereas blk files are written as blocks come in (often out of order)
|
||||||
|
@ -737,14 +738,14 @@ bool BlockManager::WriteUndoDataForBlock(const CBlockUndo& blockundo, BlockValid
|
||||||
// in the block file info as below; note that this does not catch the case where the undo writes are keeping up
|
// in the block file info as below; note that this does not catch the case where the undo writes are keeping up
|
||||||
// with the block writes (usually when a synced up node is getting newly mined blocks) -- this case is caught in
|
// with the block writes (usually when a synced up node is getting newly mined blocks) -- this case is caught in
|
||||||
// the FindBlockPos function
|
// the FindBlockPos function
|
||||||
if (_pos.nFile < m_last_blockfile && static_cast<uint32_t>(pindex->nHeight) == m_blockfile_info[_pos.nFile].nHeightLast) {
|
if (_pos.nFile < m_last_blockfile && static_cast<uint32_t>(block.nHeight) == m_blockfile_info[_pos.nFile].nHeightLast) {
|
||||||
FlushUndoFile(_pos.nFile, true);
|
FlushUndoFile(_pos.nFile, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// update nUndoPos in block index
|
// update nUndoPos in block index
|
||||||
pindex->nUndoPos = _pos.nPos;
|
block.nUndoPos = _pos.nPos;
|
||||||
pindex->nStatus |= BLOCK_HAVE_UNDO;
|
block.nStatus |= BLOCK_HAVE_UNDO;
|
||||||
m_dirty_blockindex.insert(pindex);
|
m_dirty_blockindex.insert(&block);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
Loading…
Add table
Reference in a new issue