Skip to content

Commit 5376d40

Browse files
authored
Merge pull request #190 from Masterminds/mitigate-cyclic-refs
mitigate cyclic reference between output rules and the traverser objects
2 parents 6c5dea5 + d88e167 commit 5376d40

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

src/HTML5.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,10 @@ public function save($dom, $file, $options = array())
212212
$trav = new Traverser($dom, $stream, $rules, $options);
213213

214214
$trav->walk();
215-
215+
/*
216+
* release the traverser to avoid cyclic references and allow PHP to free memory without waiting for gc_collect_cycles
217+
*/
218+
$rules->unsetTraverser();
216219
if ($close) {
217220
fclose($stream);
218221
}

src/HTML5/Serializer/OutputRules.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,13 @@ public function setTraverser(Traverser $traverser)
182182
return $this;
183183
}
184184

185+
public function unsetTraverser()
186+
{
187+
$this->traverser = null;
188+
189+
return $this;
190+
}
191+
185192
public function document($dom)
186193
{
187194
$this->doctype();

0 commit comments

Comments
 (0)