mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-03 04:21:13 +00:00
Changed direct calls to strtod to use StringToNumber
StringToNumber will correctly use locale-insensitive functions when available. Change-Id: I6bde11039a541634186f8f791012af2eb0d86b8d
This commit is contained in:
@@ -2764,10 +2764,13 @@ CheckedError Parser::ParseFlexBufferValue(flexbuffers::Builder *builder) {
|
||||
builder->Int(StringToInt(attribute_.c_str()));
|
||||
EXPECT(kTokenIntegerConstant);
|
||||
break;
|
||||
case kTokenFloatConstant:
|
||||
builder->Double(strtod(attribute_.c_str(), nullptr));
|
||||
case kTokenFloatConstant: {
|
||||
double d;
|
||||
StringToNumber(attribute_.c_str(), &d);
|
||||
builder->Double(d);
|
||||
EXPECT(kTokenFloatConstant);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
if (IsIdent("true")) {
|
||||
builder->Bool(true);
|
||||
@@ -3220,13 +3223,14 @@ Offset<reflection::Field> FieldDef::Serialize(FlatBufferBuilder *builder,
|
||||
auto docs__ = parser.opts.binary_schema_comments
|
||||
? builder->CreateVectorOfStrings(doc_comment)
|
||||
: 0;
|
||||
double d;
|
||||
StringToNumber(value.constant.c_str(), &d);
|
||||
return reflection::CreateField(
|
||||
*builder, name__, type__, id, value.offset,
|
||||
// Is uint64>max(int64) tested?
|
||||
IsInteger(value.type.base_type) ? StringToInt(value.constant.c_str()) : 0,
|
||||
// result may be platform-dependent if underlying is float (not double)
|
||||
IsFloat(value.type.base_type) ? strtod(value.constant.c_str(), nullptr)
|
||||
: 0.0,
|
||||
IsFloat(value.type.base_type) ? d : 0.0,
|
||||
deprecated, required, key, attr__, docs__);
|
||||
// TODO: value.constant is almost always "0", we could save quite a bit of
|
||||
// space by sharing it. Same for common values of value.type.
|
||||
|
||||
Reference in New Issue
Block a user