diff --git a/HTMLKit/HTMLListOfActiveFormattingElements.m b/HTMLKit/HTMLListOfActiveFormattingElements.m index 1a61c51..3088ce2 100644 --- a/HTMLKit/HTMLListOfActiveFormattingElements.m +++ b/HTMLKit/HTMLListOfActiveFormattingElements.m @@ -45,6 +45,21 @@ - (void)addElement:(HTMLElement *)element { + NSUInteger existing = 0; + for (HTMLElement *node in _list.reverseObjectEnumerator.allObjects) { + if ([node isEqual:[HTMLMarker marker]]) { + break; + } + if (node.namespace == element.namespace && + [node.tagName isEqualToString:element.tagName] && + [node.attributes isEqualTo:element.attributes]) { + existing++; + } + if (existing == 3) { + [_list removeObject:node]; + break; + } + } [_list addObject:element]; }