mirror of
https://github.com/openharmony/third_party_jsoncpp.git
synced 2026-07-20 04:54:44 -04:00
Fix the parsing error when JSONCPP parses the value of 5E-324 with libc++
Signed-off-by: hufeng <hufeng20@huawei.com> Change-Id: I1aaef25e133af8a1177713280c2f6657db182e81
This commit is contained in:
@@ -1666,6 +1666,12 @@ bool OurReader::decodeDouble(Token& token, Value& decoded) {
|
|||||||
const String buffer(token.start_, token.end_);
|
const String buffer(token.start_, token.end_);
|
||||||
IStringStream is(buffer);
|
IStringStream is(buffer);
|
||||||
if (!(is >> value)) {
|
if (!(is >> value)) {
|
||||||
|
// the value could be lower than numeric_limits<double>::min(), in this situtation we should return the value with the gurantee
|
||||||
|
// of conversion which has been performed and no occurances of range error.
|
||||||
|
if ((value > 0 && value < std::numeric_limits<double>::min()) || (value < 0 && value > -std::numeric_limits<double>::min())) {
|
||||||
|
decoded = value;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
return addError(
|
return addError(
|
||||||
"'" + String(token.start_, token.end_) + "' is not a number.", token);
|
"'" + String(token.start_, token.end_) + "' is not a number.", token);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user