LibXML: Actually append resolved references when parsing content

This commit is contained in:
Dan Klishch 2023-07-23 00:15:06 -04:00 committed by Andreas Kling
parent f25745ed27
commit 2f7527b0a4
2 changed files with 13 additions and 1 deletions

View File

@ -29,3 +29,15 @@ TEST_CASE(character_reference_integer_overflow)
return Test::Crash::Failure::DidNotCrash;
});
}
TEST_CASE(predefined_character_reference)
{
XML::Parser parser("<a>Well hello &amp;, &lt;, &gt;, &apos;, and &quot;!</a>"sv);
auto document = MUST(parser.parse());
auto const& node = document.root().content.get<XML::Node::Element>();
EXPECT_EQ(node.name, "a");
auto const& content = node.children[0]->content.get<XML::Node::Text>();
EXPECT_EQ(content.builder.string_view(), "Well hello &, <, >, ', and \"!");
}

View File

@ -862,7 +862,7 @@ ErrorOr<void, ParseError> Parser::parse_content()
if (auto char_reference = reference.get_pointer<DeprecatedString>())
append_text(*char_reference);
else
TRY(resolve_reference(reference.get<EntityReference>(), ReferencePlacement::Content));
append_text(TRY(resolve_reference(reference.get<EntityReference>(), ReferencePlacement::Content)));
goto try_char_data;
}
if (auto result = parse_cdata_section(); !result.is_error()) {