From 93de2891fa9cb8314573ba3a6ab764bc9c52444d Mon Sep 17 00:00:00 2001 From: Ben Woosley Date: Fri, 13 Jul 2018 12:41:42 -0400 Subject: [PATCH] wallet: assert to ensure accuracy of CMerkleTx::GetBlocksToMaturity According to my understanding, it should not be possible for coinbase transactions to be conflicting, thus it should not be possible for GetDepthInMainChain to return a negative result. If it did, this would also result in innacurate results for GetBlocksToMaturity due to the math therein. asserting ensures accuracy. --- src/wallet/wallet.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/wallet/wallet.cpp b/src/wallet/wallet.cpp index cdba6c644..81e65b044 100644 --- a/src/wallet/wallet.cpp +++ b/src/wallet/wallet.cpp @@ -4397,7 +4397,9 @@ int CMerkleTx::GetBlocksToMaturity() const { if (!IsCoinBase()) return 0; - return std::max(0, (COINBASE_MATURITY+1) - GetDepthInMainChain()); + int chain_depth = GetDepthInMainChain(); + assert(chain_depth >= 0); // coinbase tx should not be conflicted + return std::max(0, (COINBASE_MATURITY+1) - chain_depth); }