diff --git a/Userland/Libraries/LibXML/Parser/Parser.cpp b/Userland/Libraries/LibXML/Parser/Parser.cpp index 48cac5cac12..85d707c6d4f 100644 --- a/Userland/Libraries/LibXML/Parser/Parser.cpp +++ b/Userland/Libraries/LibXML/Parser/Parser.cpp @@ -617,6 +617,7 @@ ErrorOr Parser::parse_element() return {}; } + auto accept = accept_rule(); auto start_tag = TRY(parse_start_tag()); auto& node = *start_tag; auto& tag = node.content.get(); @@ -649,7 +650,6 @@ ErrorOr, ParseError> Parser::parse_empty_element_tag() // EmptyElemTag ::= '<' Name (S Attribute)* S? '/>' auto tag_start = m_lexer.tell(); TRY(expect("<"sv)); - auto accept = accept_rule(); auto name = TRY(parse_name()); HashMap attributes; @@ -669,6 +669,8 @@ ErrorOr, ParseError> Parser::parse_empty_element_tag() TRY(skip_whitespace()); TRY(expect("/>"sv)); + auto accept = accept_rule(); + rollback.disarm(); return make(m_lexer.position_for(tag_start), Node::Element { move(name), move(attributes), {} }); } @@ -848,6 +850,7 @@ ErrorOr Parser::parse_content() { auto rollback = rollback_point(); auto rule = enter_rule(); + auto accept = accept_rule(); // content ::= CharData? ((element | Reference | CDSect | PI | Comment) CharData?)* auto content_start = m_lexer.tell();