From a8955926c2da6cb225edb92236e04ff9eb7cbcfa Mon Sep 17 00:00:00 2001 From: Arnout Boks Date: Mon, 2 Jan 2017 11:47:49 +0100 Subject: Fixed #67474 (getElementsByTagNameNS and default namespace) This bug was caused by the fact that dom_get_elements_by_tag_name_ns_raw uses an empty string to filter on the default namespace (as NULL means 'no filter'), whereas in the node itself the default namespace is signalled by nodep->ns being null. --- ext/dom/php_dom.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'ext') diff --git a/ext/dom/php_dom.c b/ext/dom/php_dom.c index 9984356c30..fa2133bd0d 100644 --- a/ext/dom/php_dom.c +++ b/ext/dom/php_dom.c @@ -1345,7 +1345,7 @@ xmlNode *dom_get_elements_by_tag_name_ns_raw(xmlNodePtr nodep, char *ns, char *l while (nodep != NULL && (*cur <= index || index == -1)) { if (nodep->type == XML_ELEMENT_NODE) { if (xmlStrEqual(nodep->name, (xmlChar *)local) || xmlStrEqual((xmlChar *)"*", (xmlChar *)local)) { - if (ns == NULL || (nodep->ns != NULL && (xmlStrEqual(nodep->ns->href, (xmlChar *)ns) || xmlStrEqual((xmlChar *)"*", (xmlChar *)ns)))) { + if (ns == NULL || (!strcmp(ns, "") && nodep->ns == NULL) || (nodep->ns != NULL && (xmlStrEqual(nodep->ns->href, (xmlChar *)ns) || xmlStrEqual((xmlChar *)"*", (xmlChar *)ns)))) { if (*cur == index) { ret = nodep; break; -- cgit v1.2.1