diff options
author | Anatol Belski <ab@php.net> | 2016-03-08 12:59:59 +0100 |
---|---|---|
committer | Anatol Belski <ab@php.net> | 2016-03-08 12:59:59 +0100 |
commit | 8ca02bb233978493d9299a8abd29f01d1077bea6 (patch) | |
tree | 9bd0b25e75a09ace22fab65bc74ae4d7a82d5552 | |
parent | 2d4ad66ff2e9f64e23461325f3c73bd5791653c2 (diff) | |
download | php-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.c | 2 | ||||
-rw-r--r-- | ext/simplexml/tests/bug66084_1.phpt | 2 |
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":{}}} |