rrichards Tue Dec 2 10:17:03 2003 EDT Modified files: /php-src/ext/dom php_dom.c node.c Log: check node type for ->attributes and ->childNodes Index: php-src/ext/dom/php_dom.c diff -u php-src/ext/dom/php_dom.c:1.42 php-src/ext/dom/php_dom.c:1.43 --- php-src/ext/dom/php_dom.c:1.42 Sun Nov 30 07:30:29 2003 +++ php-src/ext/dom/php_dom.c Tue Dec 2 10:17:02 2003 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_dom.c,v 1.42 2003/11/30 12:30:29 rrichards Exp $ */ +/* $Id: php_dom.c,v 1.43 2003/12/02 15:17:02 rrichards Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -103,6 +103,7 @@ case XML_COMMENT_NODE: case XML_TEXT_NODE: case XML_CDATA_SECTION_NODE: + case XML_NOTATION_NODE: return FAILURE; break; default: Index: php-src/ext/dom/node.c diff -u php-src/ext/dom/node.c:1.16 php-src/ext/dom/node.c:1.17 --- php-src/ext/dom/node.c:1.16 Sat Nov 29 15:40:17 2003 +++ php-src/ext/dom/node.c Tue Dec 2 10:17:02 2003 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: node.c,v 1.16 2003/11/29 20:40:17 rrichards Exp $ */ +/* $Id: node.c,v 1.17 2003/12/02 15:17:02 rrichards Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -279,13 +279,20 @@ */ 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 @@ */ 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; }
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php