rrichards               Wed Aug 31 13:00:46 2005 EDT

  Modified files:              (Branch: PHP_5_1)
    /php-src/ext/simplexml      simplexml.c 
  Log:
  MFH: make sxe_properties_get respect namespace scope
  
http://cvs.php.net/diff.php/php-src/ext/simplexml/simplexml.c?r1=1.151.2.1&r2=1.151.2.2&ty=u
Index: php-src/ext/simplexml/simplexml.c
diff -u php-src/ext/simplexml/simplexml.c:1.151.2.1 
php-src/ext/simplexml/simplexml.c:1.151.2.2
--- php-src/ext/simplexml/simplexml.c:1.151.2.1 Thu Aug 18 09:34:40 2005
+++ php-src/ext/simplexml/simplexml.c   Wed Aug 31 13:00:46 2005
@@ -18,7 +18,7 @@
   +----------------------------------------------------------------------+
 */
 
-/* $Id: simplexml.c,v 1.151.2.1 2005/08/18 13:34:40 sniper Exp $ */
+/* $Id: simplexml.c,v 1.151.2.2 2005/08/31 17:00:46 rrichards Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -633,7 +633,7 @@
 /* {{{ _get_base_node_value()
  */
 static void
-_get_base_node_value(php_sxe_object *sxe_ref, xmlNodePtr node, zval **value 
TSRMLS_DC)
+_get_base_node_value(php_sxe_object *sxe_ref, xmlNodePtr node, zval **value, 
char *prefix TSRMLS_DC)
 {
        php_sxe_object *subnode;
        xmlChar        *contents;
@@ -650,8 +650,10 @@
                subnode = php_sxe_object_new(sxe_ref->zo.ce TSRMLS_CC);
                subnode->document = sxe_ref->document;
                subnode->document->refcount++;
+               if (prefix) {
+                       subnode->iter.nsprefix = xmlStrdup(prefix);
+               }
                php_libxml_increment_node_ptr((php_libxml_node_object 
*)subnode, node, NULL TSRMLS_CC);
-
                (*value)->type = IS_OBJECT;
                (*value)->value.obj = php_sxe_register_object(subnode 
TSRMLS_CC);
                /*zval_add_ref(value);*/
@@ -703,6 +705,10 @@
                                }
                        }
 
+                       if (node->type == XML_ELEMENT_NODE && (! match_ns(sxe, 
node, sxe->iter.nsprefix))) {
+                               goto next_iter;
+                       }
+
                        name = (char *) node->name;
                        if (!name) {
                                goto next_iter;
@@ -710,7 +716,7 @@
                                namelen = xmlStrlen(node->name) + 1;
                        }
 
-                       _get_base_node_value(sxe, node, &value TSRMLS_CC);
+                       _get_base_node_value(sxe, node, &value, 
sxe->iter.nsprefix TSRMLS_CC);
 
                        h = zend_hash_func(name, namelen);
                        if (zend_hash_quick_find(rv, name, namelen, h, (void 
**) &data_ptr) == SUCCESS) {
@@ -1736,7 +1742,7 @@
 {
        php_info_print_table_start();
        php_info_print_table_header(2, "Simplexml support", "enabled");
-       php_info_print_table_row(2, "Revision", "$Revision: 1.151.2.1 $");
+       php_info_print_table_row(2, "Revision", "$Revision: 1.151.2.2 $");
        php_info_print_table_row(2, "Schema support",
 #ifdef LIBXML_SCHEMAS_ENABLED
                "enabled");

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

Reply via email to