1
0
mirror of https://github.com/php/php-src.git synced 2026-04-24 16:38:25 +02:00
This commit is contained in:
Nikita Popov
2016-08-30 13:05:53 +02:00
parent 6adb7e0b7a
commit bfd4277008
3 changed files with 24 additions and 12 deletions
+2
View File
@@ -78,6 +78,8 @@ PHP NEWS
- SimpleXML:
. Fixed bug #72971 (SimpleXML isset/unset do not respect namespace). (Nikita)
. Fixed bug #72957 (Null coalescing operator doesn't behave as expected with
SimpleXMLElement). (Nikita)
- Standard:
. Fixed bug #55451 (substr_compare NULL length interpreted as 0). (Lauri
+6 -12
View File
@@ -356,7 +356,10 @@ long_dim:
_node_as_zval(sxe, node, rv, newtype, name, sxe->iter.nsprefix, sxe->iter.isprefix);
}
#else
_node_as_zval(sxe, node, rv, SXE_ITER_ELEMENT, name, sxe->iter.nsprefix, sxe->iter.isprefix);
/* In BP_VAR_IS mode only return a proper node if it actually exists. */
if (type != BP_VAR_IS || sxe_find_element_by_name(sxe, node->children, (xmlChar *) name)) {
_node_as_zval(sxe, node, rv, SXE_ITER_ELEMENT, name, sxe->iter.nsprefix, sxe->iter.isprefix);
}
#endif
}
}
@@ -801,17 +804,8 @@ static int sxe_prop_dim_exists(zval *object, zval *member, int check_empty, zend
node = php_sxe_get_first_node(sxe, node);
}
node = sxe_get_element_by_offset(sxe, Z_LVAL_P(member), node, NULL);
}
else {
node = node->children;
while (node) {
xmlNodePtr nnext;
nnext = node->next;
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;
}
} else {
node = sxe_find_element_by_name(sxe, node->children, (xmlChar *)Z_STRVAL_P(member));
}
if (node) {
exists = 1;
+16
View File
@@ -0,0 +1,16 @@
--TEST--
Bug #72957: Null coalescing operator doesn't behave as expected with SimpleXMLElement
--SKIPIF--
<?php if (!extension_loaded("simplexml")) print "skip simplexml extension is not loaded"; ?>
--FILE--
<?php
$xml = new SimpleXMLElement('<root><elem>Text</elem></root>');
echo 'elem2 is: ' . ($xml->elem2 ?? 'backup string') . "\n";
echo 'elem2 is: ' . (isset($xml->elem2) ? $xml->elem2 : 'backup string') . "\n";
?>
--EXPECT--
elem2 is: backup string
elem2 is: backup string