From 6cc97110920b1834cb0b198c4cc193ae03d3d700 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 464a9d40..6d45580d 100644 --- a/src/nu/validator/htmlparser/impl/TreeBuilder.java +++ b/src/nu/validator/htmlparser/impl/TreeBuilder.java @@ -4426,7 +4426,7 @@ private void anyOtherEndTagInBody(@Local String name) 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);