fix bug #41562 (SimpleXML memory issue)

This commit is contained in:
Rob Richards 2008-01-30 15:28:09 +00:00
parent 9cfc5580f4
commit ec042f7d55

View File

@ -141,24 +141,6 @@ zend_module_entry libxml_module_entry = {
/* }}} */
/* {{{ internal functions for interoperability */
static int php_libxml_dec_node(php_libxml_node_ptr *nodeptr)
{
int ret_refcount;
ret_refcount = --nodeptr->refcount;
if (ret_refcount == 0) {
if (nodeptr->node != NULL && nodeptr->node->type != XML_DOCUMENT_NODE) {
nodeptr->node->_private = NULL;
}
/* node is destroyed by another object. reset ret_refcount to 1 and node to NULL
so the php_libxml_node_ptr is detroyed when the object is destroyed */
nodeptr->refcount = 1;
nodeptr->node = NULL;
}
return ret_refcount;
}
static int php_libxml_clear_object(php_libxml_node_object *object TSRMLS_DC)
{
if (object->properties) {
@ -179,7 +161,10 @@ static int php_libxml_unregister_node(xmlNodePtr nodep TSRMLS_DC)
if (wrapper) {
php_libxml_clear_object(wrapper TSRMLS_CC);
} else {
php_libxml_dec_node(nodeptr);
if (nodeptr->node != NULL && nodeptr->node->type != XML_DOCUMENT_NODE) {
nodeptr->node->_private = NULL;
}
nodeptr->node = NULL;
}
}