rrichards Wed Jan 30 15:29:51 2008 UTC
Modified files: (Branch: PHP_5_2)
/php-src/ext/libxml libxml.c
Log:
MFH: fix bug #41562 (SimpleXML memory issue)
http://cvs.php.net/viewvc.cgi/php-src/ext/libxml/libxml.c?r1=1.32.2.7.2.16&r2=1.32.2.7.2.17&diff_format=u
Index: php-src/ext/libxml/libxml.c
diff -u php-src/ext/libxml/libxml.c:1.32.2.7.2.16
php-src/ext/libxml/libxml.c:1.32.2.7.2.17
--- php-src/ext/libxml/libxml.c:1.32.2.7.2.16 Mon Dec 31 07:20:07 2007
+++ php-src/ext/libxml/libxml.c Wed Jan 30 15:29:51 2008
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: libxml.c,v 1.32.2.7.2.16 2007/12/31 07:20:07 sebastian Exp $ */
+/* $Id: libxml.c,v 1.32.2.7.2.17 2008/01/30 15:29:51 rrichards Exp $ */
#define IS_EXT_MODULE
@@ -141,24 +141,6 @@
/* }}} */
/* {{{ 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 @@
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;
}
}
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php