rrichards Fri May 20 11:02:49 2005 EDT
Modified files: (Branch: PHP_5_0)
/php-src/ext/dom element.c node.c
Log:
MFH: correct fix for bug #33059
- fix issue in other methods
http://cvs.php.net/diff.php/php-src/ext/dom/element.c?r1=1.30.2.3&r2=1.30.2.4&ty=u
Index: php-src/ext/dom/element.c
diff -u php-src/ext/dom/element.c:1.30.2.3 php-src/ext/dom/element.c:1.30.2.4
--- php-src/ext/dom/element.c:1.30.2.3 Thu May 19 09:47:47 2005
+++ php-src/ext/dom/element.c Fri May 20 11:02:48 2005
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: element.c,v 1.30.2.3 2005/05/19 13:47:47 iliaa Exp $ */
+/* $Id: element.c,v 1.30.2.4 2005/05/20 15:02:48 rrichards Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -250,7 +250,7 @@
}
attr = xmlHasProp(nodep,name);
- if (attr != NULL) {
+ if (attr != NULL && attr->type != XML_ATTRIBUTE_DECL) {
node_list_unlink(attr->children TSRMLS_CC);
}
attr = xmlSetProp(nodep, name, value);
@@ -294,12 +294,14 @@
RETURN_FALSE;
}
- /* TODO: DTD defined attributes are handled special */
- if (php_dom_object_get_data((xmlNodePtr) attrp) == NULL) {
- node_list_unlink(attrp->children TSRMLS_CC);
- xmlUnlinkNode((xmlNodePtr) attrp);
- } else {
- xmlUnlinkNode((xmlNodePtr) attrp);
+ if (attrp->type != XML_ATTRIBUTE_DECL) {
+ if (php_dom_object_get_data((xmlNodePtr) attrp) == NULL) {
+ node_list_unlink(attrp->children TSRMLS_CC);
+ xmlUnlinkNode((xmlNodePtr) attrp);
+ xmlFreeProp(attrp);
+ } else {
+ xmlUnlinkNode((xmlNodePtr) attrp);
+ }
}
RETURN_TRUE;
@@ -367,7 +369,7 @@
}
existattrp = xmlHasProp(nodep, attrp->name);
- if (existattrp != NULL) {
+ if (existattrp != NULL && existattrp->type != XML_ATTRIBUTE_DECL) {
if ((oldobj = php_dom_object_get_data((xmlNodePtr) existattrp))
!= NULL &&
((php_libxml_node_ptr *)oldobj->ptr)->node ==
(xmlNodePtr) attrp)
{
@@ -539,7 +541,7 @@
if (errorcode == 0) {
if (uri_len > 0) {
nodep = (xmlNodePtr) xmlHasNsProp(elemp, localname,
uri);
- if (nodep != NULL) {
+ if (nodep != NULL && nodep->type != XML_ATTRIBUTE_DECL)
{
node_list_unlink(nodep->children TSRMLS_CC);
}
@@ -577,7 +579,7 @@
}
} else {
attr = xmlHasProp(elemp, localname);
- if (attr != NULL) {
+ if (attr != NULL && attr->type != XML_ATTRIBUTE_DECL) {
node_list_unlink(attr->children TSRMLS_CC);
}
attr = xmlSetProp(elemp, localname, value);
@@ -641,7 +643,7 @@
}
}
- if (attrp) {
+ if (attrp && attrp->type != XML_ATTRIBUTE_DECL) {
if (php_dom_object_get_data((xmlNodePtr) attrp) == NULL) {
node_list_unlink(attrp->children TSRMLS_CC);
xmlUnlinkNode((xmlNodePtr) attrp);
@@ -725,7 +727,7 @@
existattrp = xmlHasProp(nodep, attrp->name);
}
- if (existattrp != NULL) {
+ if (existattrp != NULL && existattrp->type != XML_ATTRIBUTE_DECL) {
if ((oldobj = php_dom_object_get_data((xmlNodePtr) existattrp))
!= NULL &&
((php_libxml_node_ptr *)oldobj->ptr)->node ==
(xmlNodePtr) attrp)
{
http://cvs.php.net/diff.php/php-src/ext/dom/node.c?r1=1.29.2.5&r2=1.29.2.6&ty=u
Index: php-src/ext/dom/node.c
diff -u php-src/ext/dom/node.c:1.29.2.5 php-src/ext/dom/node.c:1.29.2.6
--- php-src/ext/dom/node.c:1.29.2.5 Mon Apr 18 19:08:41 2005
+++ php-src/ext/dom/node.c Fri May 20 11:02:48 2005
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: node.c,v 1.29.2.5 2005/04/18 23:08:41 rrichards Exp $ */
+/* $Id: node.c,v 1.29.2.6 2005/05/20 15:02:48 rrichards Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -992,7 +992,7 @@
lastattr = xmlHasProp(refp->parent,
child->name);
else
lastattr = xmlHasNsProp(refp->parent,
child->name, child->ns->href);
- if (lastattr != NULL) {
+ if (lastattr != NULL && lastattr->type !=
XML_ATTRIBUTE_DECL) {
if (lastattr != (xmlAttrPtr) child) {
xmlUnlinkNode((xmlNodePtr) lastattr);
php_libxml_node_free_resource((xmlNodePtr) lastattr TSRMLS_CC);
@@ -1034,7 +1034,7 @@
lastattr = xmlHasProp(parentp, child->name);
else
lastattr = xmlHasNsProp(parentp, child->name,
child->ns->href);
- if (lastattr != NULL) {
+ if (lastattr != NULL && lastattr->type !=
XML_ATTRIBUTE_DECL) {
if (lastattr != (xmlAttrPtr) child) {
xmlUnlinkNode((xmlNodePtr) lastattr);
php_libxml_node_free_resource((xmlNodePtr) lastattr TSRMLS_CC);
@@ -1286,7 +1286,7 @@
lastattr = xmlHasProp(nodep, child->name);
else
lastattr = xmlHasNsProp(nodep, child->name,
child->ns->href);
- if (lastattr != NULL) {
+ if (lastattr != NULL && lastattr->type != XML_ATTRIBUTE_DECL) {
if (lastattr != (xmlAttrPtr) child) {
xmlUnlinkNode((xmlNodePtr) lastattr);
php_libxml_node_free_resource((xmlNodePtr)
lastattr TSRMLS_CC);
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php