rrichards Wed May 17 16:35:50 2006 UTC
Modified files: (Branch: PHP_5_2)
/php-src/ext/dom php_dom.c dom_iterators.c
Log:
Synch from HEAD
- Fix bug #37456 (DOMElement->setAttribute() loops forever)
- update iterators for engine change merged from HEAD
http://cvs.php.net/viewcvs.cgi/php-src/ext/dom/php_dom.c?r1=1.73.2.12.2.2&r2=1.73.2.12.2.3&diff_format=u
Index: php-src/ext/dom/php_dom.c
diff -u php-src/ext/dom/php_dom.c:1.73.2.12.2.2
php-src/ext/dom/php_dom.c:1.73.2.12.2.3
--- php-src/ext/dom/php_dom.c:1.73.2.12.2.2 Wed May 10 19:39:46 2006
+++ php-src/ext/dom/php_dom.c Wed May 17 16:35:50 2006
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_dom.c,v 1.73.2.12.2.2 2006/05/10 19:39:46 helly Exp $ */
+/* $Id: php_dom.c,v 1.73.2.12.2.3 2006/05/17 16:35:50 rrichards Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -860,6 +860,8 @@
if (wrapper != NULL ) {
xmlUnlinkNode(node);
} else {
+ if (node->type == XML_ENTITY_REF_NODE)
+ break;
node_list_unlink(node->children TSRMLS_CC);
switch (node->type) {
http://cvs.php.net/viewcvs.cgi/php-src/ext/dom/dom_iterators.c?r1=1.9.2.3.2.2&r2=1.9.2.3.2.3&diff_format=u
Index: php-src/ext/dom/dom_iterators.c
diff -u php-src/ext/dom/dom_iterators.c:1.9.2.3.2.2
php-src/ext/dom/dom_iterators.c:1.9.2.3.2.3
--- php-src/ext/dom/dom_iterators.c:1.9.2.3.2.2 Wed May 10 18:32:50 2006
+++ php-src/ext/dom/dom_iterators.c Wed May 17 16:35:50 2006
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: dom_iterators.c,v 1.9.2.3.2.2 2006/05/10 18:32:50 fmk Exp $ */
+/* $Id: dom_iterators.c,v 1.9.2.3.2.3 2006/05/17 16:35:50 rrichards Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -162,7 +162,7 @@
object = (zval *)iterator->intern.data;
if (instanceof_function(Z_OBJCE_P(object), dom_nodelist_class_entry
TSRMLS_CC)) {
- *int_key = iter->index - 1;
+ *int_key = iter->index;
return HASH_KEY_IS_LONG;
} else {
curobj = iterator->curobj;
@@ -187,7 +187,7 @@
dom_object *intern;
dom_object *nnmap;
dom_nnodemap_object *objmap;
- int ret, previndex=1;
+ int ret, previndex=0;
HashTable *nodeht;
zval **entry;
@@ -228,9 +228,9 @@
}
} else {
if (objmap->nodetype == XML_ENTITY_NODE) {
- curnode = php_dom_libxml_hash_iter(objmap->ht,
iter->index - 1);
+ curnode = php_dom_libxml_hash_iter(objmap->ht,
iter->index);
} else {
- curnode =
php_dom_libxml_notation_iter(objmap->ht, iter->index - 1);
+ curnode =
php_dom_libxml_notation_iter(objmap->ht, iter->index);
}
}
}
@@ -268,7 +268,7 @@
zend_error(E_ERROR, "An iterator cannot be used with foreach by
reference");
}
iterator = emalloc(sizeof(php_dom_iterator));
-
+
object->refcount++;
iterator->intern.data = (void*)object;
iterator->intern.funcs = &php_dom_iterator_funcs;
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php