From: Marcus Boerger Date: Sun, 30 Oct 2005 00:20:35 +0000 (+0000) Subject: - Simplify & speedup X-Git-Tag: RELEASE_2_0_1~114 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b5c08eab91579afff3f7ac1456250b0101fd9aef;p=php - Simplify & speedup --- diff --git a/ext/simplexml/simplexml.c b/ext/simplexml/simplexml.c index 78a0e70227..7dfd6bf973 100644 --- a/ext/simplexml/simplexml.c +++ b/ext/simplexml/simplexml.c @@ -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; } }