. Fixed bug #72940 (SID always return "name=ID", even if session
cookie exist). (Yasuo)
+- SimpleXML:
+ . Fixed bug #72971 (SimpleXML isset/unset do not respect namespace). (Nikita)
+
- Standard:
. Fixed bug #55451 (substr_compare NULL length interpreted as 0). (Lauri
Kenttä)
while (node) {
xmlNodePtr nnext;
nnext = node->next;
- if ((node->type == XML_ELEMENT_NODE) && !xmlStrcmp(node->name, (xmlChar *)Z_STRVAL_P(member))) {
+ if (node->type == XML_ELEMENT_NODE && !xmlStrcmp(node->name, (xmlChar *)Z_STRVAL_P(member)) && match_ns(sxe, node, sxe->iter.nsprefix, sxe->iter.isprefix)) {
break;
}
node = nnext;
SKIP_TEXT(node);
- if (!xmlStrcmp(node->name, (xmlChar *)Z_STRVAL_P(member))) {
+ if (!xmlStrcmp(node->name, (xmlChar *)Z_STRVAL_P(member)) && match_ns(sxe, node, sxe->iter.nsprefix, sxe->iter.isprefix)) {
xmlUnlinkNode(node);
php_libxml_node_free_resource(node);
}
--- /dev/null
+--TEST--
+Bug #72971: SimpleXML isset/unset do not respect namespace
+--SKIPIF--
+<?php if (!extension_loaded("simplexml")) print "skip simplexml extension is not loaded"; ?>
+--FILE--
+<?php
+
+$xml = new SimpleXMLElement('<root xmlns:ns="ns"><foo>bar</foo><ns:foo>ns:bar</ns:foo><ns:foo2>ns:bar2</ns:foo2></root>');
+var_dump(isset($xml->foo2));
+unset($xml->foo);
+var_dump($xml->children('ns'));
+
+?>
+--EXPECT--
+bool(false)
+object(SimpleXMLElement)#2 (2) {
+ ["foo"]=>
+ string(6) "ns:bar"
+ ["foo2"]=>
+ string(7) "ns:bar2"
+}