From 0a4ff038f467e45299460db04fd5125db18f206c Mon Sep 17 00:00:00 2001 From: sideshowbarker Date: Thu, 30 Jul 2026 23:19:50 +0900 Subject: [PATCH] =?UTF-8?q?fix(htmlparser):=20Don=E2=80=99t=20report=20err?= =?UTF-8?q?ors=20for=20omissible=20=20end=20tag?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Problem: We unexpectedly reported errors for omitted end tags in cases where the spec allows omitting them. Cause: The spec’s “any other end tag” case for the “in body” insertion mode requires generating implied end tags “except for HTML elements with the same tag name as the token”. But we didn’t implement that exception. Specifically, we called generateImpliedEndTags() if tag name is "option" but should instead call generateImpliedEndTagsExceptFor("option"). Fix: Call generateImpliedEndTagsExceptFor("option") instead. --- src/nu/validator/htmlparser/impl/TreeBuilder.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/nu/validator/htmlparser/impl/TreeBuilder.java b/src/nu/validator/htmlparser/impl/TreeBuilder.java index 631184e3..016bf0b6 100644 --- a/src/nu/validator/htmlparser/impl/TreeBuilder.java +++ b/src/nu/validator/htmlparser/impl/TreeBuilder.java @@ -3704,7 +3704,7 @@ public final void endTag(ElementName elementName) throws SAXException { for (;;) { StackNode node = stack[eltPos]; if (node.ns == "http://www.w3.org/1999/xhtml" && node.name == name) { - generateImpliedEndTags(); + generateImpliedEndTagsExceptFor(name); if (errorHandler != null && !isCurrent(name)) { errUnclosedElements(eltPos, name);