]> BookStack Code Mirror - bookstack/commitdiff
Includes: Workaround for PHP 8.3.14 bug
authorDan Brown <redacted>
Thu, 28 Nov 2024 16:30:59 +0000 (16:30 +0000)
committerDan Brown <redacted>
Thu, 28 Nov 2024 16:30:59 +0000 (16:30 +0000)
Changed DOMText creation to be done via document so its document
reference is correct to avoid a bug in PHP 8.3.14.
Ref: https://github.com/php/php-src/issues/16967

Fixes #5341

app/Entities/Tools/PageIncludeParser.php
app/Util/HtmlDocument.php

index dad7c29e60ee3392de7b6d56726fee5455074eb5..e0b89f158704298702122f9839898be6c9e6ffde 100644 (file)
@@ -104,10 +104,10 @@ class PageIncludeParser
 
             if ($currentOffset < $tagStartOffset) {
                 $previousText = substr($text, $currentOffset, $tagStartOffset - $currentOffset);
-                $textNode->parentNode->insertBefore(new DOMText($previousText), $textNode);
+                $textNode->parentNode->insertBefore($this->doc->createTextNode($previousText), $textNode);
             }
 
-            $node = $textNode->parentNode->insertBefore(new DOMText($tagOuterContent), $textNode);
+            $node = $textNode->parentNode->insertBefore($this->doc->createTextNode($tagOuterContent), $textNode);
             $includeTags[] = new PageIncludeTag($tagInnerContent, $node);
             $currentOffset = $tagStartOffset + strlen($tagOuterContent);
         }
index b8c53d43916294dccf63ed3821222f2888edf22d..7517955b9f60b2e14afbd91fddb7123fc9fb2095 100644 (file)
@@ -6,6 +6,7 @@ use DOMDocument;
 use DOMElement;
 use DOMNode;
 use DOMNodeList;
+use DOMText;
 use DOMXPath;
 
 /**
@@ -81,6 +82,14 @@ class HtmlDocument
         return $element;
     }
 
+    /**
+     * Create a new text node within this document.
+     */
+    public function createTextNode(string $text): DOMText
+    {
+        return $this->document->createTextNode($text);
+    }
+
     /**
      * Get an element within the document of the given ID.
      */