summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnatol Belski <ab@php.net>2016-03-08 12:59:59 +0100
committerAnatol Belski <ab@php.net>2016-03-08 12:59:59 +0100
commit8ca02bb233978493d9299a8abd29f01d1077bea6 (patch)
tree9bd0b25e75a09ace22fab65bc74ae4d7a82d5552
parent2d4ad66ff2e9f64e23461325f3c73bd5791653c2 (diff)
downloadphp-git-8ca02bb233978493d9299a8abd29f01d1077bea6.tar.gz
fix regression introduced in 5683b6fa39
Test extended. Basically, both iterator type and next node have to be checked.
-rw-r--r--ext/simplexml/simplexml.c2
-rw-r--r--ext/simplexml/tests/bug66084_1.phpt2
2 files changed, 3 insertions, 1 deletions
diff --git a/ext/simplexml/simplexml.c b/ext/simplexml/simplexml.c
index af266348a3..07fc6546e8 100644
--- a/ext/simplexml/simplexml.c
+++ b/ext/simplexml/simplexml.c
@@ -1129,7 +1129,7 @@ static HashTable * sxe_get_prop_hash(zval *object, int is_debug TSRMLS_DC) /* {{
node = NULL;
} else if (sxe->iter.type != SXE_ITER_CHILD) {
- if ( sxe->iter.type == SXE_ITER_NONE || !node->children || !node->parent || node->children->next || node->children->children || node->parent->children == node->parent->last ) {
+ if ( sxe->iter.type == SXE_ITER_NONE || !node->children || !node->parent || !node->next || node->children->next || node->children->children || node->parent->children == node->parent->last ) {
node = node->children;
} else {
iter_data = sxe->iter.data;
diff --git a/ext/simplexml/tests/bug66084_1.phpt b/ext/simplexml/tests/bug66084_1.phpt
index 80e91df7c6..85ab10ee59 100644
--- a/ext/simplexml/tests/bug66084_1.phpt
+++ b/ext/simplexml/tests/bug66084_1.phpt
@@ -5,12 +5,14 @@ Bug #66084 simplexml_load_string() mangles empty node name, json variant
<?php if (!extension_loaded("json")) print "skip json not available"; ?>
--FILE--
<?php
+echo json_encode(simplexml_load_string('<a><b/><c><x/></c></a>')->c), "\n";
echo json_encode(simplexml_load_string('<a><b/><c><x/></c></a>')), "\n";
echo json_encode(simplexml_load_string('<a><b/><d/><c><x/></c></a>')), "\n";
echo json_encode(simplexml_load_string('<a><b/><c><d/><x/></c></a>')), "\n";
echo json_encode(simplexml_load_string('<a><b/><c><d><x/></d></c></a>')), "\n";
?>
--EXPECT--
+{"x":{}}
{"b":{},"c":{"x":{}}}
{"b":{},"d":{},"c":{"x":{}}}
{"b":{},"c":{"d":{},"x":{}}}