zeev            Wed Feb  4 06:12:39 2004 EDT

  Modified files:              
    /php-src/ext/simplexml      simplexml.c 
  Log:
  - Update with new destructor code
  
  
http://cvs.php.net/diff.php/php-src/ext/simplexml/simplexml.c?r1=1.123&r2=1.124&ty=u
Index: php-src/ext/simplexml/simplexml.c
diff -u php-src/ext/simplexml/simplexml.c:1.123 php-src/ext/simplexml/simplexml.c:1.124
--- php-src/ext/simplexml/simplexml.c:1.123     Mon Feb  2 03:10:31 2004
+++ php-src/ext/simplexml/simplexml.c   Wed Feb  4 06:12:31 2004
@@ -18,7 +18,7 @@
   +----------------------------------------------------------------------+
 */
 
-/* $Id: simplexml.c,v 1.123 2004/02/02 08:10:31 sniper Exp $ */
+/* $Id: simplexml.c,v 1.124 2004/02/04 11:12:31 zeev Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -114,16 +114,16 @@
 
 /* {{{ match_ns()
  */
-static inline int 
+static inline int
 match_ns(php_sxe_object *sxe, xmlNodePtr node, xmlChar *name)
 {
        if (name == NULL && (node->ns == NULL || node->ns->prefix == NULL)) {
                return 1;
        }
-       
+
        if (node->ns && !xmlStrcmp(node->ns->href, name)) {
                return 1;
-       }       
+       }
 
        return 0;
 }
@@ -392,7 +392,7 @@
                                                newnode = node;
                                                ++counter;
                                        }
-               
+
 next_iter:
                                        node = node->next;
                                }
@@ -459,7 +459,7 @@
        xmlNodePtr      node;
        xmlAttrPtr      attr = NULL;
        int                             exists = 0;
-       
+
        sxe = php_sxe_fetch_object(object TSRMLS_CC);
 
        name = Z_STRVAL_P(member);
@@ -488,7 +488,7 @@
                                        exists = 1;
                                        break;
                                }
-       
+
                                attr = attr->next;
                        }
                }
@@ -568,9 +568,9 @@
                        node = node->children;
                        while (node) {
                                nnext = node->next;
-       
+
                                SKIP_TEXT(node);
-                               
+
                                if (!xmlStrcmp(node->name, Z_STRVAL_P(member))) {
                                        xmlUnlinkNode(node);
                                        php_libxml_node_free_resource(node TSRMLS_CC);
@@ -613,7 +613,7 @@
        xmlChar        *contents;
 
        MAKE_STD_ZVAL(*value);
-       
+
        if (node->children && node->children->type == XML_TEXT_NODE && 
!xmlIsBlankNode(node->children)) {
                contents = xmlNodeListGetString(node->doc, node->children, 1);
                if (contents) {
@@ -676,7 +676,7 @@
                                        goto next_iter;
                                }
                        }
-                       
+
                        name = (char *) node->name;
                        if (!name) {
                                goto next_iter;
@@ -685,7 +685,7 @@
                        }
 
                        _get_base_node_value(sxe, node, &value TSRMLS_CC);
-                       
+
                        h = zend_hash_func(name, namelen);
                        if (zend_hash_quick_find(rv, name, namelen, h, (void **) 
&data_ptr) == SUCCESS) {
                                if (Z_TYPE_PP(data_ptr) == IS_ARRAY) {
@@ -738,7 +738,7 @@
 /* }}} */
 
 /* {{{ xpath()
- */ 
+ */
 SXE_METHOD(xpath)
 {
        php_sxe_object    *sxe;
@@ -813,7 +813,7 @@
                        add_next_index_zval(return_value, value);
                }
        }
-       
+
        xmlXPathFreeObject(retval);
 }
 /* }}} */
@@ -838,10 +838,10 @@
                if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &filename, 
&filename_len) == FAILURE) {
                        RETURN_FALSE;
                }
-               
+
                sxe = php_sxe_fetch_object(getThis() TSRMLS_CC);
                GET_NODE(sxe, node);
-               
+
                if (node) {
                        if (XML_DOCUMENT_NODE == node->parent->type) {
                                xmlSaveFile(filename, (xmlDocPtr) sxe->document->ptr);
@@ -850,7 +850,7 @@
 
                                if (outbuf == NULL) {
                                        RETURN_FALSE;
-                               }               
+                               }
 
                                xmlNodeDumpOutput(outbuf, (xmlDocPtr) 
sxe->document->ptr, node, 0, 1, NULL);
                                xmlOutputBufferClose(outbuf);
@@ -873,11 +873,11 @@
 
                        if (outbuf == NULL) {
                                RETURN_FALSE;
-                       }               
+                       }
 
                        xmlNodeDumpOutput(outbuf, (xmlDocPtr) sxe->document->ptr, 
node, 0, 1, ((xmlDocPtr) sxe->document->ptr)->encoding);
                        xmlOutputBufferFlush(outbuf);
-                       strval = xmlStrndup(outbuf->buffer->content, 
outbuf->buffer->use);      
+                       strval = xmlStrndup(outbuf->buffer->content, 
outbuf->buffer->use);
                        xmlOutputBufferClose(outbuf);
                }
 
@@ -1062,9 +1062,18 @@
 }
 /* }}} */
 
-/* {{{ sxe_object_dtor()
+/* {{{ _free_ns_entry()
+ */
+static void
+_free_ns_entry(void *p, xmlChar *data)
+{
+       xmlFree(p);
+}
+/* }}} */
+
+/* {{{ sxe_object_free_storage()
  */
-static void sxe_object_dtor(void *object, zend_object_handle handle TSRMLS_DC)
+static void sxe_object_free_storage(void *object TSRMLS_DC)
 {
        php_sxe_object *sxe;
 
@@ -1089,17 +1098,17 @@
        if (sxe->xpath) {
                xmlXPathFreeContext(sxe->xpath);
        }
-       
+
        if (sxe->properties) {
                zend_hash_destroy(sxe->properties);
                FREE_HASHTABLE(sxe->properties);
        }
-       
+
        efree(object);
 }
 /* }}} */
 
-/* {{{ php_sxe_object_new() 
+/* {{{ php_sxe_object_new()
  */
 static php_sxe_object* php_sxe_object_new(zend_class_entry *ce TSRMLS_DC)
 {
@@ -1126,7 +1135,7 @@
 {
        zend_object_value rv;
 
-       rv.handle = zend_objects_store_put(intern, sxe_object_dtor, sxe_object_clone 
TSRMLS_CC);
+       rv.handle = zend_objects_store_put(intern, NULL, sxe_object_free_storage, 
sxe_object_clone TSRMLS_CC);
        rv.handlers = (zend_object_handlers *) &sxe_object_handlers;
 
        return rv;
@@ -1296,7 +1305,7 @@
        while (node) {
                SKIP_TEXT(node);
                if (sxe->iter.type != SXE_ITER_ATTRLIST && node->type == 
XML_ELEMENT_NODE) {
-                       if (sxe->iter.type == SXE_ITER_ELEMENT) { 
+                       if (sxe->iter.type == SXE_ITER_ELEMENT) {
                                if (!xmlStrcmp(node->name, sxe->iter.name) && 
match_ns(sxe, node, prefix)) {
                                        break;
                                }
@@ -1330,7 +1339,7 @@
        iterator->intern.data = (void*)object;
        iterator->intern.funcs = &php_sxe_iterator_funcs;
        iterator->sxe = php_sxe_fetch_object(object TSRMLS_CC);
-       
+
        return (zend_object_iterator*)iterator;
 }
 
@@ -1339,10 +1348,10 @@
        php_sxe_iterator *iterator = (php_sxe_iterator *)iter;
 
        zval_ptr_dtor((zval**)&iterator->intern.data);
-       
+
        efree(iterator);
 }
-       
+
 static int php_sxe_iterator_has_more(zend_object_iterator *iter TSRMLS_DC)
 {
        php_sxe_iterator *iterator = (php_sxe_iterator *)iter;
@@ -1402,7 +1411,7 @@
                SKIP_TEXT(node);
 
                if (sxe->iter.type != SXE_ITER_ATTRLIST && node->type == 
XML_ELEMENT_NODE) {
-                       if (sxe->iter.type == SXE_ITER_ELEMENT) { 
+                       if (sxe->iter.type == SXE_ITER_ELEMENT) {
                                if (!xmlStrcmp(node->name, sxe->iter.name) && 
match_ns(sxe, node, prefix)) {
                                        break;
                                }
@@ -1483,7 +1492,7 @@
                        }
                        ce = *pce;
                }
-       
+
                sxe = php_sxe_object_new(ce TSRMLS_CC);
                sxe->document = object->document;
                php_libxml_increment_doc_ref((php_libxml_node_object *)sxe, nodep->doc 
TSRMLS_CC);
@@ -1568,8 +1577,8 @@
 {
        php_info_print_table_start();
        php_info_print_table_header(2, "Simplexml support", "enabled");
-       php_info_print_table_row(2, "Revision", "$Revision: 1.123 $");
-       php_info_print_table_row(2, "Schema support", 
+       php_info_print_table_row(2, "Revision", "$Revision: 1.124 $");
+       php_info_print_table_row(2, "Schema support",
 #ifdef LIBXML_SCHEMAS_ENABLED
                "enabled");
 #else


-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to