summaryrefslogtreecommitdiff
path: root/ext/dom/node.c
diff options
context:
space:
mode:
authorRob Richards <rrichards@php.net>2003-12-02 15:17:02 +0000
committerRob Richards <rrichards@php.net>2003-12-02 15:17:02 +0000
commit6fa6d3c4707b1fa1327292e1197445114304ab61 (patch)
treeafb96a4df4ef0cee46e4022e3a8725e42c4252f7 /ext/dom/node.c
parent49af06e7b42db83caa26bc9dfafa8187ab392823 (diff)
downloadphp-git-6fa6d3c4707b1fa1327292e1197445114304ab61.tar.gz
check node type for ->attributes and ->childNodes
Diffstat (limited to 'ext/dom/node.c')
-rw-r--r--ext/dom/node.c28
1 files changed, 21 insertions, 7 deletions
diff --git a/ext/dom/node.c b/ext/dom/node.c
index e638ec003f..40ba5b3ab4 100644
--- a/ext/dom/node.c
+++ b/ext/dom/node.c
@@ -279,13 +279,20 @@ Since:
*/
int dom_node_child_nodes_read(dom_object *obj, zval **retval TSRMLS_DC)
{
+ xmlNode *nodep;
dom_object *intern;
- ALLOC_ZVAL(*retval);
- php_dom_create_interator(*retval, DOM_NODELIST TSRMLS_CC);
+ nodep = dom_object_get_node(obj);
- intern = (dom_object *)zend_objects_get_address(*retval TSRMLS_CC);
- dom_namednode_iter(obj, XML_ELEMENT_NODE, intern, NULL, NULL, NULL);
+ ALLOC_ZVAL(*retval);
+
+ if (dom_node_children_valid(nodep) == FAILURE) {
+ ZVAL_NULL(*retval);
+ } else {
+ php_dom_create_interator(*retval, DOM_NODELIST TSRMLS_CC);
+ intern = (dom_object *)zend_objects_get_address(*retval TSRMLS_CC);
+ dom_namednode_iter(obj, XML_ELEMENT_NODE, intern, NULL, NULL, NULL);
+ }
return SUCCESS;
}
@@ -427,13 +434,20 @@ Since:
*/
int dom_node_attributes_read(dom_object *obj, zval **retval TSRMLS_DC)
{
+ xmlNode *nodep;
dom_object *intern;
+ nodep = dom_object_get_node(obj);
+
ALLOC_ZVAL(*retval);
- php_dom_create_interator(*retval, DOM_NAMEDNODEMAP TSRMLS_CC);
- intern = (dom_object *)zend_objects_get_address(*retval TSRMLS_CC);
- dom_namednode_iter(obj, XML_ATTRIBUTE_NODE, intern, NULL, NULL, NULL);
+ if (nodep->type == XML_ELEMENT_NODE) {
+ php_dom_create_interator(*retval, DOM_NAMEDNODEMAP TSRMLS_CC);
+ intern = (dom_object *)zend_objects_get_address(*retval TSRMLS_CC);
+ dom_namednode_iter(obj, XML_ATTRIBUTE_NODE, intern, NULL, NULL, NULL);
+ } else {
+ ZVAL_NULL(*retval);
+ }
return SUCCESS;
}