while (node) {
xmlNodePtr nnext;
nnext = node->next;
- if (!xmlStrcmp(node->name, (xmlChar *)Z_STRVAL_P(member))) {
+ if ((node->type == XML_ELEMENT_NODE) && !xmlStrcmp(node->name, (xmlChar *)Z_STRVAL_P(member))) {
break;
}
node = nnext;
--- /dev/null
+--TEST--
+Bug #46003 (isset on nonexisting nodes return unexpected results)
+--FILE--
+<?php
+$xml =<<<XML
+<r>
+ <p>Test</p>
+ <o d='h'>
+ <xx rr='info' />
+ <yy rr='data' />
+ </o>
+</r>
+XML;
+
+$x = simplexml_load_string($xml);
+
+var_dump(isset($x->p));
+var_dump(isset($x->p->o));
+var_dump(isset($x->o->yy));
+var_dump(isset($x->o->zz));
+var_dump(isset($x->o->text));
+var_dump(isset($x->o->xx));
+?>
+--EXPECTF--
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(false)
+bool(true)
\ No newline at end of file