diff options
| author | fanquake <[email protected]> | 2020-02-29 09:23:54 +0800 |
|---|---|---|
| committer | fanquake <[email protected]> | 2020-02-29 09:44:48 +0800 |
| commit | 902796093235083c23df10c1c45f80d89a93b2ab (patch) | |
| tree | 786eebd8035fb015779b9226f67a7c697e76a3df /src/util | |
| parent | Merge #16562: Refactor message transport packaging (diff) | |
| parent | util: Fail to parse empty string in ParseMoney (diff) | |
| download | discoin-902796093235083c23df10c1c45f80d89a93b2ab.tar.xz discoin-902796093235083c23df10c1c45f80d89a93b2ab.zip | |
Merge #18225: util: Fail to parse empty string in ParseMoney
8888461f6814ae8b6221b02049fb9e1f69a5ff70 util: Fail to parse empty string in ParseMoney (MarcoFalke)
fab30b61eb51538a4db62e34f7133c44575b3fe9 util: Remove unused ParseMoney that takes a c_str (MarcoFalke)
Pull request description:
Supplying a fee rate or an amount on the command line as an empty string, which currently parses as `0` seems fragile and confusing. See for example the confusion in #18214.
Fixes #18214
ACKs for top commit:
Empact:
Code Review ACK https://github.com/bitcoin/bitcoin/pull/18225/commits/8888461f6814ae8b6221b02049fb9e1f69a5ff70
achow101:
ACK 8888461f6814ae8b6221b02049fb9e1f69a5ff70
instagibbs:
utACK https://github.com/bitcoin/bitcoin/pull/18225/commits/8888461f6814ae8b6221b02049fb9e1f69a5ff70
Tree-SHA512: ac2d6b7fa89fe5809c34d5f49831042032591c34fb3c76908d72fed51e8bced41bf2b41dc1b3be34ee691a40463355649857a7a8f378709d38ae89503feb11c2
Diffstat (limited to 'src/util')
| -rw-r--r-- | src/util/moneystr.cpp | 10 | ||||
| -rw-r--r-- | src/util/moneystr.h | 2 |
2 files changed, 6 insertions, 6 deletions
diff --git a/src/util/moneystr.cpp b/src/util/moneystr.cpp index 2797f450c..40d8918df 100644 --- a/src/util/moneystr.cpp +++ b/src/util/moneystr.cpp @@ -36,14 +36,14 @@ bool ParseMoney(const std::string& str, CAmount& nRet) if (!ValidAsCString(str)) { return false; } - return ParseMoney(str.c_str(), nRet); -} -bool ParseMoney(const char* pszIn, CAmount& nRet) -{ + if (str.empty()) { + return false; + } + std::string strWhole; int64_t nUnits = 0; - const char* p = pszIn; + const char* p = str.c_str(); while (IsSpace(*p)) p++; for (; *p; p++) diff --git a/src/util/moneystr.h b/src/util/moneystr.h index 027c7e2e5..d8b08adc2 100644 --- a/src/util/moneystr.h +++ b/src/util/moneystr.h @@ -18,7 +18,7 @@ * JSON but use AmountFromValue and ValueFromAmount for that. */ std::string FormatMoney(const CAmount& n); +/** Parse an amount denoted in full coins. E.g. "0.0034" supplied on the command line. **/ NODISCARD bool ParseMoney(const std::string& str, CAmount& nRet); -NODISCARD bool ParseMoney(const char* pszIn, CAmount& nRet); #endif // BITCOIN_UTIL_MONEYSTR_H |