]> granicus.if.org Git - php/commitdiff
fixed non-existent elements check
authorGeorge Schlossnagle <gschlossnagle@php.net>
Wed, 24 Mar 2004 05:04:26 +0000 (05:04 +0000)
committerGeorge Schlossnagle <gschlossnagle@php.net>
Wed, 24 Mar 2004 05:04:26 +0000 (05:04 +0000)
ref: http://news.php.net/article.php?group=php.internals&article=8660

ext/simplexml/simplexml.c

index c6f064f6bb5254451a27ab6198d0440cfa8df77e..3fd0f2516a17c3cf254d9fbb7f8a12f284d2925c 100644 (file)
@@ -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;
                        }