diff options
-rw-r--r-- | src/policy/fees.cpp | 3 | ||||
-rw-r--r-- | src/policy/fees.h | 2 | ||||
-rw-r--r-- | src/txmempool.cpp | 2 |
3 files changed, 4 insertions, 3 deletions
diff --git a/src/policy/fees.cpp b/src/policy/fees.cpp index 0f2e3c100d..a1b785e3e7 100644 --- a/src/policy/fees.cpp +++ b/src/policy/fees.cpp @@ -299,6 +299,7 @@ void CBlockPolicyEstimator::removeTx(uint256 hash) CBlockPolicyEstimator::CBlockPolicyEstimator(const CFeeRate& _minRelayFee) : nBestSeenHeight(0) { + static_assert(MIN_FEERATE > 0, "Min feerate must be nonzero"); minTrackedFee = _minRelayFee < CFeeRate(MIN_FEERATE) ? CFeeRate(MIN_FEERATE) : _minRelayFee; std::vector<double> vfeelist; for (double bucketBoundary = minTrackedFee.GetFeePerK(); bucketBoundary <= MAX_FEERATE; bucketBoundary *= FEE_SPACING) { @@ -485,7 +486,7 @@ void CBlockPolicyEstimator::Read(CAutoFile& filein, int nFileVersion) FeeFilterRounder::FeeFilterRounder(const CFeeRate& minIncrementalFee) { - CAmount minFeeLimit = minIncrementalFee.GetFeePerK() / 2; + CAmount minFeeLimit = std::max(CAmount(1), minIncrementalFee.GetFeePerK() / 2); feeset.insert(0); for (double bucketBoundary = minFeeLimit; bucketBoundary <= MAX_FEERATE; bucketBoundary *= FEE_SPACING) { feeset.insert(bucketBoundary); diff --git a/src/policy/fees.h b/src/policy/fees.h index 73f8e081a4..1f10cfb237 100644 --- a/src/policy/fees.h +++ b/src/policy/fees.h @@ -179,7 +179,7 @@ static const double MIN_SUCCESS_PCT = .95; static const double SUFFICIENT_FEETXS = 1; // Minimum and Maximum values for tracking feerates -static const double MIN_FEERATE = 10; +static constexpr double MIN_FEERATE = 10; static const double MAX_FEERATE = 1e7; static const double INF_FEERATE = MAX_MONEY; static const double INF_PRIORITY = 1e9 * MAX_MONEY; diff --git a/src/txmempool.cpp b/src/txmempool.cpp index a8ca0e2da4..4ccbcadefc 100644 --- a/src/txmempool.cpp +++ b/src/txmempool.cpp @@ -1077,7 +1077,7 @@ CFeeRate CTxMemPool::GetMinFee(size_t sizelimit) const { rollingMinimumFeeRate = rollingMinimumFeeRate / pow(2.0, (time - lastRollingFeeUpdate) / halflife); lastRollingFeeUpdate = time; - if (rollingMinimumFeeRate < minReasonableRelayFee.GetFeePerK() / 2) { + if (rollingMinimumFeeRate < (double)minReasonableRelayFee.GetFeePerK() / 2) { rollingMinimumFeeRate = 0; return CFeeRate(0); } |