mirror of
https://github.com/php/php-src.git
synced 2026-04-24 16:38:25 +02:00
Fix bug #72957
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user