diff options
author | George Schlossnagle <gschlossnagle@php.net> | 2004-03-24 05:04:26 +0000 |
---|---|---|
committer | George Schlossnagle <gschlossnagle@php.net> | 2004-03-24 05:04:26 +0000 |
commit | b9c04fe19a1355ed7c25f62fa42035089f4a569e (patch) | |
tree | 318f34b6619623713d457e4fbae587de1b9bd407 /ext/simplexml | |
parent | b12f5f7e457b120e330c5ac10ed9957a92a48cc0 (diff) | |
download | php-git-b9c04fe19a1355ed7c25f62fa42035089f4a569e.tar.gz |
fixed non-existent elements check
ref: http://news.php.net/article.php?group=php.internals&article=8660
Diffstat (limited to 'ext/simplexml')
-rw-r--r-- | ext/simplexml/simplexml.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/ext/simplexml/simplexml.c b/ext/simplexml/simplexml.c index c6f064f6bb..3fd0f2516a 100644 --- a/ext/simplexml/simplexml.c +++ b/ext/simplexml/simplexml.c @@ -511,7 +511,23 @@ static int sxe_prop_dim_exists(zval *object, zval *member, int check_empty, zend } node = sxe_get_element_by_offset(sxe, Z_LVAL_P(member), node); } - + else { + if (Z_TYPE_P(member) != IS_STRING) { + zval tmp_zv = *member; + zval_copy_ctor(&tmp_zv); + member = &tmp_zv; + convert_to_string(member); + } + node = node->children; + while (node) { + xmlNodePtr nnext; + nnext = node->next; + if (!xmlStrcmp(node->name, Z_STRVAL_P(member))) { + break; + } + node = nnext; + } + } if (node) { exists = 1; } |