]> granicus.if.org Git - php/commitdiff
- Simplify & speedup
authorMarcus Boerger <helly@php.net>
Sun, 30 Oct 2005 00:20:35 +0000 (00:20 +0000)
committerMarcus Boerger <helly@php.net>
Sun, 30 Oct 2005 00:20:35 +0000 (00:20 +0000)
ext/simplexml/simplexml.c

index 78a0e7022742e0ab8ddb61040ae738950d774241..7dfd6bf973523ce0c1d9283db2db6090476fa78d 100644 (file)
@@ -1569,6 +1569,7 @@ ZEND_API void php_sxe_reset_iterator(php_sxe_object *sxe TSRMLS_DC)
 {
        xmlNodePtr node;
        char *prefix;
+       int test;
 
        if (sxe->iter.data) {
                zval_ptr_dtor(&sxe->iter.data);
@@ -1590,6 +1591,7 @@ ZEND_API void php_sxe_reset_iterator(php_sxe_object *sxe TSRMLS_DC)
        }
 
        prefix = sxe->iter.nsprefix;
+       test = sxe->iter.type == SXE_ITER_ATTRLIST && sxe->iter.name;
 
        while (node) {
                SKIP_TEXT(node);
@@ -1605,11 +1607,7 @@ ZEND_API void php_sxe_reset_iterator(php_sxe_object *sxe TSRMLS_DC)
                        }
                } else {
                        if (node->type == XML_ATTRIBUTE_NODE) {
-                               if (sxe->iter.type == SXE_ITER_ATTRLIST && sxe->iter.name) {
-                                       if (!xmlStrcmp(node->name, sxe->iter.name) && match_ns(sxe, node, prefix)) {
-                                               break;
-                                       }
-                               } else if (match_ns(sxe, node, sxe->iter.nsprefix)) {
+                               if ((!test || !xmlStrcmp(node->name, sxe->iter.name)) && match_ns(sxe, node, prefix)) {
                                        break;
                                }
                        }
@@ -1698,6 +1696,7 @@ ZEND_API void php_sxe_move_forward_iterator(php_sxe_object *sxe TSRMLS_DC)
        xmlNodePtr      node = NULL;
        php_sxe_object  *intern;
        char *prefix;
+       int test;
 
        if (sxe->iter.data) {
                intern = (php_sxe_object *)zend_object_store_get_object(sxe->iter.data TSRMLS_CC);
@@ -1711,6 +1710,7 @@ ZEND_API void php_sxe_move_forward_iterator(php_sxe_object *sxe TSRMLS_DC)
        }
 
        prefix = sxe->iter.nsprefix;
+       test = sxe->iter.type == SXE_ITER_ATTRLIST && sxe->iter.name;
 
        while (node) {
                SKIP_TEXT(node);
@@ -1727,11 +1727,7 @@ ZEND_API void php_sxe_move_forward_iterator(php_sxe_object *sxe TSRMLS_DC)
                        }
                } else {
                        if (node->type == XML_ATTRIBUTE_NODE) {
-                               if (sxe->iter.type == SXE_ITER_ATTRLIST && sxe->iter.name) {
-                                       if (!xmlStrcmp(node->name, sxe->iter.name) && match_ns(sxe, node, prefix)) {
-                                               break;
-                                       }
-                               } else if (match_ns(sxe, node, sxe->iter.nsprefix)) {
+                               if ((!test || !xmlStrcmp(node->name, sxe->iter.name)) && match_ns(sxe, node, prefix)) {
                                        break;
                                }
                        }