diff --git a/HTMLKit/HTMLParser.m b/HTMLKit/HTMLParser.m
index d453490..243dacc 100644
--- a/HTMLKit/HTMLParser.m
+++ b/HTMLKit/HTMLParser.m
@@ -1873,7 +1873,7 @@
switch (token.type) {
case HTMLTokenTypeStartTag:
if ([token.asTagToken.tagName isEqualToAny:@"th", @"td", nil]) {
- [_stackOfOpenElements clearBackToTableContext];
+ [_stackOfOpenElements clearBackToTableRowContext];
[self insertElementForToken:token.asTagToken];
[self switchInsertionMode:HTMLInsertionModeInCell];
[_listOfActiveFormattingElements addMarker];
diff --git a/HTMLKit/HTMLStackOfOpenElements.h b/HTMLKit/HTMLStackOfOpenElements.h
index 5417a15..a07b52e 100644
--- a/HTMLKit/HTMLStackOfOpenElements.h
+++ b/HTMLKit/HTMLStackOfOpenElements.h
@@ -32,6 +32,7 @@
- (void)popElementsUntilElementPopped:(HTMLElement *)element;
- (void)clearBackToTableContext;
- (void)clearBackToTableBodyContext;
+- (void)clearBackToTableRowContext;
- (void)popAll;
- (HTMLElement *)hasElementInScopeWithTagName:(NSString *)tagName;
diff --git a/HTMLKit/HTMLStackOfOpenElements.m b/HTMLKit/HTMLStackOfOpenElements.m
index 4fd7ab2..41391a0 100644
--- a/HTMLKit/HTMLStackOfOpenElements.m
+++ b/HTMLKit/HTMLStackOfOpenElements.m
@@ -152,6 +152,13 @@
}
}
+- (void)clearBackToTableRowContext
+{
+ while (![self.currentNode.tagName isEqualToAny:@"tr", @"template", @"html", nil]) {
+ [_stack removeLastObject];
+ }
+}
+
- (void)popAll
{
[_stack removeAllObjects];