@@ -98,6 +98,9 @@ class TreeConstructor {
9898 private boolean quirksMode ;
9999 private boolean inHtmlContent ;
100100
101+ // ----
102+ // used in findAppropriatePlaceForInsertingNode
103+ private final Node [] insertionBase = new Node [2 ];
101104 // ----
102105
103106 void setTokenizerState (int state ) {
@@ -607,7 +610,8 @@ Element insertHtmlElementToken() {
607610 // ------------------
608611
609612 // appropriate place for inserting a node
610- Node [] findAppropriatePlaceForInsertingNode (Element overrideTarget ) {
613+ // /!\ the returned array is shared /!\, don't modify it
614+ private Node [] findAppropriatePlaceForInsertingNode (Element overrideTarget ) {
611615 Element target = overrideTarget != null ? overrideTarget : getCurrentNode ();
612616 int targetNameID = target .nodeNameID ;
613617 if (fosterParentingEnabled && (Node .NAMESPACE_HTML_ID == target .namespaceID && (
@@ -625,23 +629,33 @@ Node[] findAppropriatePlaceForInsertingNode(Element overrideTarget) {
625629 // 3
626630 if (lastTemplatePos != -1 && ((lastTablePos == -1 ) || (lastTemplatePos > lastTablePos ))) {
627631 // inside the template
628- return new Node [] { openElements .get (lastTemplatePos ), null };
632+ insertionBase [0 ] = openElements .get (lastTemplatePos );
633+ insertionBase [1 ] = null ;
634+ return insertionBase ;
629635 }
630636 // 4
631637 if (lastTablePos == -1 ) {
632- return new Node [] { openElements .get (0 ), null };
638+ insertionBase [0 ] = openElements .get (0 );
639+ insertionBase [1 ] = null ;
640+ return insertionBase ;
633641 }
634642 // 5
635643 Element lastTable = openElements .get (lastTablePos );
636644 if (lastTable .getParentNode () != null ) {
637- return new Node [] { lastTable .getParentNode (), lastTable };
645+ insertionBase [0 ] = lastTable .getParentNode ();
646+ insertionBase [1 ] = lastTable ;
647+ return insertionBase ;
638648 }
639649 // 6
640650 Element previous = openElements .get (lastTablePos - 1 );
641651 // 7
642- return new Node [] { previous , null };
652+ insertionBase [0 ] = previous ;
653+ insertionBase [1 ] = null ;
654+ return insertionBase ;
643655 } else {
644- return new Node [] { target , null };
656+ insertionBase [0 ] = target ;
657+ insertionBase [1 ] = null ;
658+ return insertionBase ;
645659 }
646660 }
647661
0 commit comments