From: Christian Stocker Date: Tue, 26 Nov 2002 15:37:54 +0000 (+0000) Subject: Fix for Bug #20639 DomElement->get_elements_by_tagname() doesn't work X-Git-Tag: RELEASE_1_0b3~293 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=20688a30ab55d1635fa416e61cc959948e35e421;p=php Fix for Bug #20639 DomElement->get_elements_by_tagname() doesn't work --- diff --git a/ext/domxml/php_domxml.c b/ext/domxml/php_domxml.c index c00f618b67..c4f076af0f 100644 --- a/ext/domxml/php_domxml.c +++ b/ext/domxml/php_domxml.c @@ -616,11 +616,12 @@ static inline void node_list_wrapper_dtor(xmlNodePtr node) } } -static xmlNodeSetPtr php_get_elements_by_tagname(xmlNodePtr n, xmlChar* name) +static xmlNodeSetPtr php_get_elements_by_tagname(xmlNodePtr n, xmlChar* name, xmlNodeSet *rv ) { - xmlNodeSetPtr rv = NULL; xmlNodePtr cld = NULL; - + /* TODO + Namespace support + */ if ( n != NULL && name != NULL ) { cld = n->children; while ( cld != NULL ) { @@ -632,6 +633,7 @@ static xmlNodeSetPtr php_get_elements_by_tagname(xmlNodePtr n, xmlChar* name) xmlXPathNodeSetAdd( rv, cld ); } } + rv = php_get_elements_by_tagname(cld, name, rv); cld = cld->next; } } @@ -3042,7 +3044,7 @@ PHP_FUNCTION(domxml_elem_get_elements_by_tagname) xmlNode *nodep; int name_len,i; char *name; - xmlNodeSet *nodesetp; + xmlNodeSet *nodesetp = NULL; DOMXML_PARAM_TWO(nodep, id, le_domxmlelementp, "s", &name, &name_len); @@ -3053,7 +3055,7 @@ PHP_FUNCTION(domxml_elem_get_elements_by_tagname) RETURN_FALSE; } - nodesetp = php_get_elements_by_tagname(nodep,name); + nodesetp = php_get_elements_by_tagname(nodep, name, NULL); if(nodesetp) { for (i = 0; i < nodesetp->nodeNr; i++) {