diff options
| author | Matt Corallo <[email protected]> | 2017-09-11 15:47:09 -0400 |
|---|---|---|
| committer | Matt Corallo <[email protected]> | 2017-09-11 18:07:52 -0400 |
| commit | 1789e4675b17f274fcb0761321e6fd249a102f40 (patch) | |
| tree | d72c88f1091a160d8cfb6aff41aa13d57b9072ce /src/txmempool.cpp | |
| parent | Make float <-> int casts explicit outside of test, qt, CFeeRate (diff) | |
| download | discoin-1789e4675b17f274fcb0761321e6fd249a102f40.tar.xz discoin-1789e4675b17f274fcb0761321e6fd249a102f40.zip | |
Force explicit double -> int conversion for CFeeRate constructor
This resolves an issue where estimatesmartfee would return 999
sat/byte instead of 1000, due to floating point loss of precision
Thanks to sipa for suggesting is_integral.
Diffstat (limited to 'src/txmempool.cpp')
| -rw-r--r-- | src/txmempool.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/txmempool.cpp b/src/txmempool.cpp index f68d67764..776d3f36c 100644 --- a/src/txmempool.cpp +++ b/src/txmempool.cpp @@ -981,7 +981,7 @@ const CTxMemPool::setEntries & CTxMemPool::GetMemPoolChildren(txiter entry) cons CFeeRate CTxMemPool::GetMinFee(size_t sizelimit) const { LOCK(cs); if (!blockSinceLastRollingFeeBump || rollingMinimumFeeRate == 0) - return CFeeRate(rollingMinimumFeeRate); + return CFeeRate(llround(rollingMinimumFeeRate)); int64_t time = GetTime(); if (time > lastRollingFeeUpdate + 10) { @@ -999,7 +999,7 @@ CFeeRate CTxMemPool::GetMinFee(size_t sizelimit) const { return CFeeRate(0); } } - return std::max(CFeeRate(rollingMinimumFeeRate), incrementalRelayFee); + return std::max(CFeeRate(llround(rollingMinimumFeeRate)), incrementalRelayFee); } void CTxMemPool::trackPackageRemoved(const CFeeRate& rate) { |