diff --git a/AUTHORS.rst b/AUTHORS.rst
index fe9ae89b..c3820ef7 100644
--- a/AUTHORS.rst
+++ b/AUTHORS.rst
@@ -41,3 +41,4 @@ Patches and suggestions
- Jim Baker
- Michael[tm] Smith
- Marc Abramowitz
+- Jon Dufresne
diff --git a/html5lib/html5parser.py b/html5lib/html5parser.py
index daee854c..3daf2995 100644
--- a/html5lib/html5parser.py
+++ b/html5lib/html5parser.py
@@ -171,8 +171,10 @@ def mainLoop(self):
ParseErrorToken = tokenTypes["ParseError"]
for token in self.normalizedTokens():
+ prev_token = None
new_token = token
while new_token is not None:
+ prev_token = new_token
currentNode = self.tree.openElements[-1] if self.tree.openElements else None
currentNodeNamespace = currentNode.namespace if currentNode else None
currentNodeName = currentNode.name if currentNode else None
@@ -211,10 +213,10 @@ def mainLoop(self):
elif type == DoctypeToken:
new_token = phase.processDoctype(new_token)
- if (type == StartTagToken and token["selfClosing"] and
- not token["selfClosingAcknowledged"]):
+ if (type == StartTagToken and prev_token["selfClosing"] and
+ not prev_token["selfClosingAcknowledged"]):
self.parseError("non-void-element-with-trailing-solidus",
- {"name": token["name"]})
+ {"name": prev_token["name"]})
# When the loop finishes it's EOF
reprocess = True
@@ -1933,6 +1935,7 @@ def processCharacters(self, token):
def startTagCol(self, token):
self.tree.insertElement(token)
self.tree.openElements.pop()
+ token["selfClosingAcknowledged"] = True
def startTagOther(self, token):
ignoreEndTag = self.ignoreEndTagColgroup()
diff --git a/html5lib/tests/test_parser2.py b/html5lib/tests/test_parser2.py
index b7a92fd7..21dc59d9 100644
--- a/html5lib/tests/test_parser2.py
+++ b/html5lib/tests/test_parser2.py
@@ -93,3 +93,9 @@ def test_debug_log():
def test_no_duplicate_clone():
frag = parseFragment("