aboutsummaryrefslogtreecommitdiff
path: root/src/utilstrencodings.cpp
diff options
context:
space:
mode:
authorWladimir J. van der Laan <[email protected]>2015-07-24 11:07:52 +0200
committerWladimir J. van der Laan <[email protected]>2015-07-24 11:08:52 +0200
commitbfd807ff3287f391dcf184b755997fb9d0456a1a (patch)
treecbc3dd0388a24ba2d74eae87feffc217695368d6 /src/utilstrencodings.cpp
parentMerge pull request #6465 (diff)
parentutil: use locale-independent parsing in ParseDouble (diff)
downloaddiscoin-bfd807ff3287f391dcf184b755997fb9d0456a1a.tar.xz
discoin-bfd807ff3287f391dcf184b755997fb9d0456a1a.zip
Merge pull request #6456
ec249d4 util: use locale-independent parsing in ParseDouble (Wladimir J. van der Laan) 7650449 univalue: Avoid unnecessary roundtrip through double for numbers (Wladimir J. van der Laan) e061e27 rpc: Make ValueFromAmount always return 8 decimals (Wladimir J. van der Laan)
Diffstat (limited to 'src/utilstrencodings.cpp')
-rw-r--r--src/utilstrencodings.cpp11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/utilstrencodings.cpp b/src/utilstrencodings.cpp
index 7208ca947..1f7a2cae2 100644
--- a/src/utilstrencodings.cpp
+++ b/src/utilstrencodings.cpp
@@ -464,11 +464,12 @@ bool ParseDouble(const std::string& str, double *out)
return false;
if (str.size() >= 2 && str[0] == '0' && str[1] == 'x') // No hexadecimal floats allowed
return false;
- char *endp = NULL;
- errno = 0; // strtod will not set errno if valid
- double n = strtod(str.c_str(), &endp);
- if(out) *out = n;
- return endp && *endp == 0 && !errno;
+ std::istringstream text(str);
+ text.imbue(std::locale::classic());
+ double result;
+ text >> result;
+ if(out) *out = result;
+ return text.eof() && !text.fail();
}
std::string FormatParagraph(const std::string& in, size_t width, size_t indent)