mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-30 13:50:02 +00:00
Fixed FlexBuffers ToString unquoted non-ident keys
Change-Id: I0a17ee292c9eebbb1e9b2530c07d37d63b4dda24
This commit is contained in:
@@ -572,7 +572,23 @@ class Reference {
|
|||||||
auto keys = m.Keys();
|
auto keys = m.Keys();
|
||||||
auto vals = m.Values();
|
auto vals = m.Values();
|
||||||
for (size_t i = 0; i < keys.size(); i++) {
|
for (size_t i = 0; i < keys.size(); i++) {
|
||||||
keys[i].ToString(true, keys_quoted, s);
|
bool kq = keys_quoted;
|
||||||
|
if (!kq) {
|
||||||
|
// FlexBuffers keys may contain arbitrary characters, only allow
|
||||||
|
// unquoted if it looks like an "identifier":
|
||||||
|
const char *p = keys[i].AsKey();
|
||||||
|
if (!flatbuffers::is_alpha(*p) && *p != '_') {
|
||||||
|
kq = true;
|
||||||
|
} else {
|
||||||
|
while (*++p) {
|
||||||
|
if (!flatbuffers::is_alnum(*p) && *p != '_') {
|
||||||
|
kq = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
keys[i].ToString(true, kq, s);
|
||||||
s += ": ";
|
s += ": ";
|
||||||
vals[i].ToString(true, keys_quoted, s);
|
vals[i].ToString(true, keys_quoted, s);
|
||||||
if (i < keys.size() - 1) s += ", ";
|
if (i < keys.size() - 1) s += ", ";
|
||||||
|
|||||||
Reference in New Issue
Block a user