cvs: php-src /ext/xmlreader php_xmlreader.c
| From: | Rob Richards | Date: | Thu, 10 Mar 2005 22:32:47 +0000 |
| Subject: | cvs: php-src /ext/xmlreader php_xmlreader.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-30846@lists.php.net to get a copy of this message | ||
rrichards Thu Mar 10 17:32:47 2005 EDT
Modified files:
/php-src/ext/xmlreader php_xmlreader.c
Log:
add workaround for libxml bug when using next() method
remove some no longer needed windows specific code
http://cvs.php.net/diff.php/php-src/ext/xmlreader/php_xmlreader.c?r1=1.8&r2=1.9&ty=u
Index: php-src/ext/xmlreader/php_xmlreader.c
diff -u php-src/ext/xmlreader/php_xmlreader.c:1.8 php-src/ext/xmlreader/php_xmlreader.c:1.9
--- php-src/ext/xmlreader/php_xmlreader.c:1.8 Sun Feb 20 17:56:32 2005
+++ php-src/ext/xmlreader/php_xmlreader.c Thu Mar 10 17:32:47 2005
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_xmlreader.c,v 1.8 2005/02/20 22:56:32 pajoye Exp $ */
+/* $Id: php_xmlreader.c,v 1.9 2005/03/10 22:32:47 rrichards Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -776,22 +776,17 @@
id = getThis();
intern = (xmlreader_object *)zend_object_store_get_object(id TSRMLS_CC);
if (intern != NULL && intern->ptr != NULL) {
+#if LIBXML_VERSION <= 20617
+ /* Bug in libxml prevents a next in certain cases when positioned on end of element */
+ if (xmlTextReaderNodeType(intern->ptr) == XML_READER_TYPE_END_ELEMENT) {
+ retval = xmlTextReaderRead(intern->ptr);
+ } else
+#endif
retval = xmlTextReaderNext(intern->ptr);
while (name != NULL && retval == 1) {
-#ifdef PHP_WIN32
- /* xmlTextReaderConstLocalName should be used once its added to win def libxml.def file.
- Doing so will not require localname to be freed as its not allocated */
- xmlChar *localname = xmlTextReaderLocalName(intern->ptr);
- if (xmlStrEqual(localname, name)) {
- xmlFree(localname);
- RETURN_TRUE;
- }
- xmlFree(localname);
-#else
if (xmlStrEqual(xmlTextReaderConstLocalName(intern->ptr), name)) {
RETURN_TRUE;
}
-#endif
retval = xmlTextReaderNext(intern->ptr);
}
if (retval == -1) {