aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Corallo <git@bluematt.me>2017-04-27 11:31:53 -0400
committerMatt Corallo <git@bluematt.me>2017-12-04 09:39:21 -0500
commit22fdddeabb17881af2004c45538f91514837d363 (patch)
tree0434b725bfdf14daffab46b620008d0c3cf82eb6
parent2862aca40f24acc48d3052d5ba3f639e3fc0a621 (diff)
Avoid calling GetSerializeSize on each tx in a block if !fTxIndex
-rw-r--r--src/validation.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/validation.cpp b/src/validation.cpp
index f6b77b6c38..af303df73a 100644
--- a/src/validation.cpp
+++ b/src/validation.cpp
@@ -1647,6 +1647,8 @@ static bool WriteUndoDataForBlock(const CBlockUndo& blockundo, CValidationState&
static bool WriteTxIndexDataForBlock(const CBlock& block, CValidationState& state, CBlockIndex* pindex)
{
+ if (!fTxIndex) return true;
+
CDiskTxPos pos(pindex->GetBlockPos(), GetSizeOfCompactSize(block.vtx.size()));
std::vector<std::pair<uint256, CDiskTxPos> > vPos;
vPos.reserve(block.vtx.size());
@@ -1656,9 +1658,9 @@ static bool WriteTxIndexDataForBlock(const CBlock& block, CValidationState& stat
pos.nTxOffset += ::GetSerializeSize(*tx, SER_DISK, CLIENT_VERSION);
}
- if (fTxIndex)
- if (!pblocktree->WriteTxIndex(vPos))
- return AbortNode(state, "Failed to write transaction index");
+ if (!pblocktree->WriteTxIndex(vPos)) {
+ return AbortNode(state, "Failed to write transaction index");
+ }
return true;
}