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

View file

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