diff options
| author | Rob Richards <rrichards@php.net> | 2003-12-02 15:17:02 +0000 |
|---|---|---|
| committer | Rob Richards <rrichards@php.net> | 2003-12-02 15:17:02 +0000 |
| commit | 6fa6d3c4707b1fa1327292e1197445114304ab61 (patch) | |
| tree | afb96a4df4ef0cee46e4022e3a8725e42c4252f7 /ext/dom/node.c | |
| parent | 49af06e7b42db83caa26bc9dfafa8187ab392823 (diff) | |
| download | php-git-6fa6d3c4707b1fa1327292e1197445114304ab61.tar.gz | |
check node type for ->attributes and ->childNodes
Diffstat (limited to 'ext/dom/node.c')
| -rw-r--r-- | ext/dom/node.c | 28 |
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; } |
