]> granicus.if.org Git - php/commitdiff
MFB: fix bug #41867 (getName is broken)
authorRob Richards <rrichards@php.net>
Mon, 2 Jul 2007 11:36:28 +0000 (11:36 +0000)
committerRob Richards <rrichards@php.net>
Mon, 2 Jul 2007 11:36:28 +0000 (11:36 +0000)
add test

ext/simplexml/simplexml.c
ext/simplexml/tests/bug41867.phpt [new file with mode: 0644]

index 15fbf456f1484f574523a487035618ba378b1621..7b0b9bc08ab86cbd8b4d7d211c6b1f1f19530dd8 100644 (file)
@@ -1550,9 +1550,13 @@ SXE_METHOD(getName)
        sxe = php_sxe_fetch_object(getThis() TSRMLS_CC);
 
        GET_NODE(sxe, node);
-       
-       namelen = xmlStrlen(node->name);
-       RETVAL_XML_STRING_LEN((char *) node->name, namelen, ZSTR_DUPLICATE);
+       node = php_sxe_get_first_node(sxe, node TSRMLS_CC);
+       if (node) {
+               namelen = xmlStrlen(node->name);
+               RETVAL_XML_STRING_LEN((char *) node->name, namelen, ZSTR_DUPLICATE);
+       } else {
+               RETURN_EMPTY_TEXT();
+       }
 }
 /* }}} */
 
diff --git a/ext/simplexml/tests/bug41867.phpt b/ext/simplexml/tests/bug41867.phpt
new file mode 100644 (file)
index 0000000..f530f95
--- /dev/null
@@ -0,0 +1,14 @@
+--TEST--
+Bug #41867 (getName is broken)
+--FILE--
+<?php
+
+$a = simplexml_load_string("<a><b><c/></b></a>");
+echo $a->getName()."\n";
+echo $a->b->getName()."\n";
+echo $a->b->c->getName();
+?>
+--EXPECT--
+a
+b
+c