diff --git a/src/main/java/org/jsoup/parser/HtmlTreeBuilderState.java b/src/main/java/org/jsoup/parser/HtmlTreeBuilderState.java index cec10b4561..518793c246 100644 --- a/src/main/java/org/jsoup/parser/HtmlTreeBuilderState.java +++ b/src/main/java/org/jsoup/parser/HtmlTreeBuilderState.java @@ -8,6 +8,7 @@ import org.jsoup.nodes.Element; import org.jsoup.nodes.Node; +import javax.annotation.Nullable; import java.util.ArrayList; import static org.jsoup.internal.StringUtil.inSorted; @@ -123,7 +124,7 @@ boolean process(Token t, HtmlTreeBuilder tb) { if (name.equals("base") && el.hasAttr("href")) tb.maybeSetBaseUri(el); } else if (name.equals("meta")) { - Element meta = tb.insertEmpty(start); + tb.insertEmpty(start); // todo: charset switches } else if (name.equals("title")) { handleRcData(start, tb); @@ -842,7 +843,6 @@ else if (!tb.onStack(formatEl)) { tb.replaceOnStack(node, replacement); node = replacement; - //noinspection StatementWithEmptyBody if (lastNode == furthestBlock) { // move the aforementioned bookmark to be immediately after the new node in the list of active formatting elements. // not getting how this bookmark both straddles the element above, but is inbetween here... @@ -855,14 +855,16 @@ else if (!tb.onStack(formatEl)) { lastNode = node; } - if (inSorted(commonAncestor.normalName(), Constants.InBodyEndTableFosters)) { - if (lastNode.parent() != null) - lastNode.remove(); - tb.insertInFosterParent(lastNode); - } else { - if (lastNode.parent() != null) - lastNode.remove(); - commonAncestor.appendChild(lastNode); + if (commonAncestor != null) { // safety check, but would be an error if null + if (inSorted(commonAncestor.normalName(), Constants.InBodyEndTableFosters)) { + if (lastNode.parent() != null) + lastNode.remove(); + tb.insertInFosterParent(lastNode); + } else { + if (lastNode.parent() != null) + lastNode.remove(); + commonAncestor.appendChild(lastNode); + } } Element adopter = new Element(formatEl.tag(), tb.getBaseUri());