Fix Variant tags parsing.

(cherry picked from commit eca4d2fccc)
This commit is contained in:
bruvzg 2021-07-05 15:46:10 +03:00 committed by Rémi Verschelde
parent 9a22f4b8df
commit c7a0113a4b
No known key found for this signature in database
GPG Key ID: C3336907360768E1
1 changed files with 24 additions and 8 deletions

View File

@ -1297,16 +1297,32 @@ Error VariantParser::_parse_tag(Token &token, Stream *p_stream, int &line, Strin
r_tag.name = "";
r_tag.fields.clear();
while (true) {
CharType c = p_stream->get_char();
if (p_stream->is_eof()) {
r_err_str = "Unexpected EOF while parsing simple tag";
return ERR_PARSE_ERROR;
if (p_stream->is_utf8()) {
CharString cs;
while (true) {
CharType 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;
}
if (c == ']') {
break;
r_tag.name.parse_utf8(cs.get_data(), cs.length());
} else {
while (true) {
CharType 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;
}
r_tag.name += String::chr(c);
}
r_tag.name += String::chr(c);
}
r_tag.name = r_tag.name.strip_edges();