From 280339e2f0b42ef47cc1b332d611a1ea6dda83ee Mon Sep 17 00:00:00 2001 From: iska Date: Sat, 11 Apr 2015 00:31:37 +0200 Subject: [PATCH] Fix adoption agency algorithm --- HTMLKit/HTMLParser.m | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/HTMLKit/HTMLParser.m b/HTMLKit/HTMLParser.m index 1fa62dc..8cf7c4a 100644 --- a/HTMLKit/HTMLParser.m +++ b/HTMLKit/HTMLParser.m @@ -519,10 +519,12 @@ HTMLElement *node = furthestBlock; HTMLElement *lastNode = furthestBlock; + NSUInteger index = [_stackOfOpenElements indexOfElement:node]; for (int innerLoopCounter = 0; innerLoopCounter < 3; innerLoopCounter ++) { - NSUInteger stackIndex = [_stackOfOpenElements indexOfElement:node]; - node = _stackOfOpenElements[stackIndex - 1]; + index--; + node = _stackOfOpenElements[index]; + if (![_listOfActiveFormattingElements containsElement:node]) { [_stackOfOpenElements removeElement:node]; continue; @@ -532,18 +534,18 @@ break; } - stackIndex = [_stackOfOpenElements indexOfElement:node]; - NSUInteger listIndex = [_listOfActiveFormattingElements indexOfElement:node]; - HTMLElement *newElement = [node copy]; - [_listOfActiveFormattingElements replaceElementAtIndex:listIndex withElement:newElement]; - [_stackOfOpenElements replaceElementAtIndex:stackIndex withElement:newElement]; + [_listOfActiveFormattingElements replaceElementAtIndex:[_listOfActiveFormattingElements indexOfElement:node] + withElement:newElement]; + [_stackOfOpenElements replaceElementAtIndex:[_stackOfOpenElements indexOfElement:node] + withElement:newElement]; node = newElement; if ([lastNode isEqual:furthestBlock]) { - bookmark = listIndex + 1; + bookmark = [_listOfActiveFormattingElements indexOfElement:node] + 1; } + [lastNode.parentNode removeChildNode:lastNode]; [node appendNode:lastNode]; lastNode = node; }