Browse Source

MFH: fix bug #41562 (SimpleXML memory issue)

PHP-5.2.1RC1
Rob Richards 18 years ago
parent
commit
005ece078a
  1. 23
      ext/libxml/libxml.c

23
ext/libxml/libxml.c

@ -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;
}
}

Loading…
Cancel
Save