Merge pull request #50177 from bruvzg/fix_variant_tags

Fix Variant tags parsing.
This commit is contained in:
Rémi Verschelde 2021-07-05 15:07:35 +02:00 committed by GitHub
commit 26b86c1074
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 24 additions and 8 deletions

View File

@ -1204,6 +1204,21 @@ Error VariantParser::_parse_tag(Token &token, Stream *p_stream, int &line, Strin
r_tag.name = "";
r_tag.fields.clear();
if (p_stream->is_utf8()) {
CharString cs;
while (true) {
char c = p_stream->get_char();
if (p_stream->is_eof()) {
r_err_str = "Unexpected EOF while parsing simple tag";
return ERR_PARSE_ERROR;
}
if (c == ']') {
break;
}
cs += c;
}
r_tag.name.parse_utf8(cs.get_data(), cs.length());
} else {
while (true) {
char32_t c = p_stream->get_char();
if (p_stream->is_eof()) {
@ -1215,6 +1230,7 @@ Error VariantParser::_parse_tag(Token &token, Stream *p_stream, int &line, Strin
}
r_tag.name += String::chr(c);
}
}
r_tag.name = r_tag.name.strip_edges();