Disallow implicit conversion for CFeeRate constructor

This commit is contained in:
Gregory Sanders 2019-08-20 09:58:35 -04:00
parent 8e59af55aa
commit 6a51f79517
2 changed files with 3 additions and 3 deletions

View File

@ -25,7 +25,7 @@ public:
/** Fee rate of 0 satoshis per kB */ /** Fee rate of 0 satoshis per kB */
CFeeRate() : nSatoshisPerK(0) { } CFeeRate() : nSatoshisPerK(0) { }
template<typename I> template<typename I>
CFeeRate(const I _nSatoshisPerK): nSatoshisPerK(_nSatoshisPerK) { explicit CFeeRate(const I _nSatoshisPerK): nSatoshisPerK(_nSatoshisPerK) {
// We've previously had bugs creep in from silent double->int conversion... // We've previously had bugs creep in from silent double->int conversion...
static_assert(std::is_integral<I>::value, "CFeeRate should be used without floats"); static_assert(std::is_integral<I>::value, "CFeeRate should be used without floats");
} }

View File

@ -2327,7 +2327,7 @@ static UniValue settxfee(const JSONRPCRequest& request)
CAmount nAmount = AmountFromValue(request.params[0]); CAmount nAmount = AmountFromValue(request.params[0]);
CFeeRate tx_fee_rate(nAmount, 1000); CFeeRate tx_fee_rate(nAmount, 1000);
if (tx_fee_rate == 0) { if (tx_fee_rate == CFeeRate(0)) {
// automatic selection // automatic selection
} else if (tx_fee_rate < pwallet->chain().relayMinFee()) { } else if (tx_fee_rate < pwallet->chain().relayMinFee()) {
throw JSONRPCError(RPC_INVALID_PARAMETER, strprintf("txfee cannot be less than min relay tx fee (%s)", pwallet->chain().relayMinFee().ToString())); throw JSONRPCError(RPC_INVALID_PARAMETER, strprintf("txfee cannot be less than min relay tx fee (%s)", pwallet->chain().relayMinFee().ToString()));
@ -3386,7 +3386,7 @@ static UniValue bumpfee(const JSONRPCRequest& request)
} }
} else if (options.exists("fee_rate")) { } else if (options.exists("fee_rate")) {
CFeeRate fee_rate(AmountFromValue(options["fee_rate"])); CFeeRate fee_rate(AmountFromValue(options["fee_rate"]));
if (fee_rate <= 0) { if (fee_rate <= CFeeRate(0)) {
throw JSONRPCError(RPC_INVALID_PARAMETER, strprintf("Invalid fee_rate %s (must be greater than 0)", fee_rate.ToString())); throw JSONRPCError(RPC_INVALID_PARAMETER, strprintf("Invalid fee_rate %s (must be greater than 0)", fee_rate.ToString()));
} }
coin_control.m_feerate = fee_rate; coin_control.m_feerate = fee_rate;