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

Reply via email to