[prev in list] [next in list] [prev in thread] [next in thread]
List: php-cvs
Subject: [PHP-CVS] =?utf-8?q?svn:_/php/php-src/_branches/PHP=5F5=5F3/ext/simplexml/simplexml.c_trunk/ext/simp
From: Rob_Richards <rrichards () php ! net>
Date: 2010-12-27 18:57:49
Message-ID: svn-rrichards-1293476269-306759-1947533197 () svn ! php ! net
[Download RAW message or body]
rrichards Mon, 27 Dec 2010 18:57:49 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=306759
Log:
fix crash with entity declarations
Changed paths:
U php/php-src/branches/PHP_5_3/ext/simplexml/simplexml.c
U php/php-src/trunk/ext/simplexml/simplexml.c
Modified: php/php-src/branches/PHP_5_3/ext/simplexml/simplexml.c
===================================================================
--- php/php-src/branches/PHP_5_3/ext/simplexml/simplexml.c 2010-12-27 17:17:43 UTC \
(rev 306758)
+++ php/php-src/branches/PHP_5_3/ext/simplexml/simplexml.c 2010-12-27 18:57:49 UTC \
(rev 306759) @@ -1099,22 +1099,24 @@
if (sxe->iter.type == SXE_ITER_ELEMENT) {
node = php_sxe_get_first_node(sxe, node TSRMLS_CC);
}
- attr = node ? (xmlAttrPtr)node->properties : NULL;
- zattr = NULL;
- test = sxe->iter.name && sxe->iter.type == SXE_ITER_ATTRLIST;
- while (attr) {
- if ((!test || !xmlStrcmp(attr->name, sxe->iter.name)) && match_ns(sxe, \
(xmlNodePtr)attr, sxe->iter.nsprefix, sxe->iter.isprefix)) {
- MAKE_STD_ZVAL(value);
- ZVAL_STRING(value, sxe_xmlNodeListGetString((xmlDocPtr) sxe->document->ptr, \
attr->children, 1), 0);
- namelen = xmlStrlen(attr->name) + 1;
- if (!zattr) {
- MAKE_STD_ZVAL(zattr);
- array_init(zattr);
- sxe_properties_add(rv, "@attributes", sizeof("@attributes"), zattr TSRMLS_CC);
+ if (node->tpye != XML_ENTITY_DECL) {
+ attr = node ? (xmlAttrPtr)node->properties : NULL;
+ zattr = NULL;
+ test = sxe->iter.name && sxe->iter.type == SXE_ITER_ATTRLIST;
+ while (attr) {
+ if ((!test || !xmlStrcmp(attr->name, sxe->iter.name)) && match_ns(sxe, \
(xmlNodePtr)attr, sxe->iter.nsprefix, sxe->iter.isprefix)) { \
+ MAKE_STD_ZVAL(value); + ZVAL_STRING(value, \
sxe_xmlNodeListGetString((xmlDocPtr) sxe->document->ptr, attr->children, 1), 0); \
+ namelen = xmlStrlen(attr->name) + 1; + if (!zattr) {
+ MAKE_STD_ZVAL(zattr);
+ array_init(zattr);
+ sxe_properties_add(rv, "@attributes", sizeof("@attributes"), zattr TSRMLS_CC);
+ }
+ add_assoc_zval_ex(zattr, (char*)attr->name, namelen, value);
}
- add_assoc_zval_ex(zattr, (char*)attr->name, namelen, value);
+ attr = attr->next;
}
- attr = attr->next;
}
}
Modified: php/php-src/trunk/ext/simplexml/simplexml.c
===================================================================
--- php/php-src/trunk/ext/simplexml/simplexml.c 2010-12-27 17:17:43 UTC (rev 306758)
+++ php/php-src/trunk/ext/simplexml/simplexml.c 2010-12-27 18:57:49 UTC (rev 306759)
@@ -1099,22 +1099,24 @@
if (sxe->iter.type == SXE_ITER_ELEMENT) {
node = php_sxe_get_first_node(sxe, node TSRMLS_CC);
}
- attr = node ? (xmlAttrPtr)node->properties : NULL;
- zattr = NULL;
- test = sxe->iter.name && sxe->iter.type == SXE_ITER_ATTRLIST;
- while (attr) {
- if ((!test || !xmlStrcmp(attr->name, sxe->iter.name)) && match_ns(sxe, \
(xmlNodePtr)attr, sxe->iter.nsprefix, sxe->iter.isprefix)) {
- MAKE_STD_ZVAL(value);
- ZVAL_STRING(value, sxe_xmlNodeListGetString((xmlDocPtr) sxe->document->ptr, \
attr->children, 1), 0);
- namelen = xmlStrlen(attr->name) + 1;
- if (!zattr) {
- MAKE_STD_ZVAL(zattr);
- array_init(zattr);
- sxe_properties_add(rv, "@attributes", sizeof("@attributes"), zattr TSRMLS_CC);
+ if (node->tpye != XML_ENTITY_DECL) {
+ attr = node ? (xmlAttrPtr)node->properties : NULL;
+ zattr = NULL;
+ test = sxe->iter.name && sxe->iter.type == SXE_ITER_ATTRLIST;
+ while (attr) {
+ if ((!test || !xmlStrcmp(attr->name, sxe->iter.name)) && match_ns(sxe, \
(xmlNodePtr)attr, sxe->iter.nsprefix, sxe->iter.isprefix)) { \
+ MAKE_STD_ZVAL(value); + ZVAL_STRING(value, \
sxe_xmlNodeListGetString((xmlDocPtr) sxe->document->ptr, attr->children, 1), 0); \
+ namelen = xmlStrlen(attr->name) + 1; + if (!zattr) {
+ MAKE_STD_ZVAL(zattr);
+ array_init(zattr);
+ sxe_properties_add(rv, "@attributes", sizeof("@attributes"), zattr TSRMLS_CC);
+ }
+ add_assoc_zval_ex(zattr, (char*)attr->name, namelen, value);
}
- add_assoc_zval_ex(zattr, (char*)attr->name, namelen, value);
+ attr = attr->next;
}
- attr = attr->next;
}
}
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic