Permalink
Browse files

Moving XmlNode::__killParent() to a protected method so Xml can acces…

…s it. Adding _killParent(true) call to Xml::__destruct. Forces destruction of circular references held in child objects when an xml object is garbage collected. Fixes #369
  • Loading branch information...
1 parent cd46f4d commit 60465287445f546ea85ee12827772c06055984f7 @markstory markstory committed Dec 1, 2009
Showing with 4 additions and 4 deletions.
  1. +4 −4 cake/libs/xml.php
View
@@ -110,7 +110,6 @@ function __construct($name = null, $value = null, $namespace = null) {
$this->createTextNode($value);
}
}
-
/**
* Adds a namespace to the current node
*
@@ -732,13 +731,13 @@ function __toString() {
* if given the $recursive parameter.
*
* @param boolean $recursive Recursively delete elements.
- * @access private
+ * @access protected
*/
- function __killParent($recursive = true) {
+ function _killParent($recursive = true) {
unset($this->__parent, $this->_log);
if ($recursive && $this->hasChildren()) {
for ($i = 0; $i < count($this->children); $i++) {
- $this->children[$i]->__killParent(true);
+ $this->children[$i]->_killParent(true);
}
}
}
@@ -1093,6 +1092,7 @@ function __destruct() {
if (is_resource($this->__parser)) {
xml_parser_free($this->__parser);
}
+ $this->_killParent(true);
}
/**
* Adds a namespace to any XML documents generated or parsed

0 comments on commit 6046528

Please sign in to comment.