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

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

index a62151d8847f044b51b3fbf11782595aa648805b..5c7cd60e5c4cfb137956c630bc75641142786ff3 100644 (file)
@@ -1488,9 +1488,13 @@ SXE_METHOD(getName)
        sxe = php_sxe_fetch_object(getThis() TSRMLS_CC);
 
        GET_NODE(sxe, node);
-       
-       namelen = xmlStrlen(node->name);
-       RETURN_STRINGL((char*)node->name, namelen, 1);
+       node = php_sxe_get_first_node(sxe, node TSRMLS_CC);
+       if (node) {
+               namelen = xmlStrlen(node->name);
+               RETURN_STRINGL((char*)node->name, namelen, 1);
+       } else {
+               RETURN_EMPTY_STRING();
+       }
 }
 /* }}} */
 
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