rrichards Tue Feb 17 14:57:49 2004 EDT
Modified files:
/php-src/ext/dom php_dom.c
Log:
add dtor to cleanup iterator related data
http://cvs.php.net/diff.php/php-src/ext/dom/php_dom.c?r1=1.53&r2=1.54&ty=u
Index: php-src/ext/dom/php_dom.c
diff -u php-src/ext/dom/php_dom.c:1.53 php-src/ext/dom/php_dom.c:1.54
--- php-src/ext/dom/php_dom.c:1.53 Tue Feb 17 06:13:47 2004
+++ php-src/ext/dom/php_dom.c Tue Feb 17 14:57:48 2004
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_dom.c,v 1.53 2004/02/17 11:13:47 rrichards Exp $ */
+/* $Id: php_dom.c,v 1.54 2004/02/17 19:57:48 rrichards Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -879,14 +879,15 @@
/* }}} */
#endif
-void dom_nnodemap_objects_free_storage(void *object TSRMLS_DC)
+static void dom_nnodemap_object_dtor(void *object, zend_object_handle handle
TSRMLS_DC)
{
- dom_nnodemap_object *objmap;
zval *baseobj;
- dom_object *intern = (dom_object *)object;
+ dom_object *intern;
+ dom_nnodemap_object *objmap;
- php_libxml_decrement_doc_ref((php_libxml_node_object *)intern TSRMLS_CC);
+ intern = (dom_object *)object;
objmap = (dom_nnodemap_object *)intern->ptr;
+
if (objmap) {
if (objmap->local) {
xmlFree(objmap->local);
@@ -899,8 +900,18 @@
zval_ptr_dtor((zval **)&baseobj);
}
efree(objmap);
+ intern->ptr = NULL;
}
+
+}
+
+void dom_nnodemap_objects_free_storage(void *object TSRMLS_DC)
+{
+ dom_object *intern = (dom_object *)object;
+
+ php_libxml_decrement_doc_ref((php_libxml_node_object *)intern TSRMLS_CC);
+
zend_hash_destroy(intern->std.properties);
FREE_HASHTABLE(intern->std.properties);
@@ -923,7 +934,7 @@
objmap->local = NULL;
objmap->ns = NULL;
- retval.handle = zend_objects_store_put(intern, NULL,
(zend_objects_free_object_storage_t)dom_nnodemap_objects_free_storage,
dom_objects_clone TSRMLS_CC);
+ retval.handle = zend_objects_store_put(intern, dom_nnodemap_object_dtor,
(zend_objects_free_object_storage_t)dom_nnodemap_objects_free_storage,
dom_objects_clone TSRMLS_CC);
intern->handle = retval.handle;
retval.handlers = &dom_object_handlers;
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php