rrichards Thu Sep 20 09:30:45 2007 UTC
Added files: (Branch: PHP_5_2)
/php-src/ext/xmlreader/tests bug42139.phpt
Modified files:
/php-src/ext/xmlreader php_xmlreader.c
Log:
MFH: fix bug #42139 (XMLReader option constants are broken using XML())
add test
http://cvs.php.net/viewvc.cgi/php-src/ext/xmlreader/php_xmlreader.c?r1=1.13.2.14.2.8&r2=1.13.2.14.2.9&diff_format=u
Index: php-src/ext/xmlreader/php_xmlreader.c
diff -u php-src/ext/xmlreader/php_xmlreader.c:1.13.2.14.2.8
php-src/ext/xmlreader/php_xmlreader.c:1.13.2.14.2.9
--- php-src/ext/xmlreader/php_xmlreader.c:1.13.2.14.2.8 Thu Jul 26 13:20:21 2007
+++ php-src/ext/xmlreader/php_xmlreader.c Thu Sep 20 09:30:45 2007
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_xmlreader.c,v 1.13.2.14.2.8 2007/07/26 13:20:21 bjori Exp $ */
+/* $Id: php_xmlreader.c,v 1.13.2.14.2.9 2007/09/20 09:30:45 rrichards Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -1060,7 +1060,7 @@
long options = 0;
xmlreader_object *intern = NULL;
char *source, *uri = NULL, *encoding = NULL;
- int resolved_path_len;
+ int resolved_path_len, ret = 0;
char *directory=NULL, resolved_path[MAXPATHLEN];
xmlParserInputBufferPtr inputbfr;
xmlTextReaderPtr reader;
@@ -1105,15 +1105,20 @@
xmlFree(uri);
}
if (reader != NULL) {
- if (id == NULL) {
- object_init_ex(return_value,
xmlreader_class_entry);
- intern = (xmlreader_object
*)zend_objects_get_address(return_value TSRMLS_CC);
- } else {
- RETVAL_TRUE;
+#if LIBXML_VERSION >= 20628
+ ret = xmlTextReaderSetup(reader, NULL, uri, encoding,
options);
+#endif
+ if (ret == 0) {
+ if (id == NULL) {
+ object_init_ex(return_value,
xmlreader_class_entry);
+ intern = (xmlreader_object
*)zend_objects_get_address(return_value TSRMLS_CC);
+ } else {
+ RETVAL_TRUE;
+ }
+ intern->input = inputbfr;
+ intern->ptr = reader;
+ return;
}
- intern->input = inputbfr;
- intern->ptr = reader;
- return;
}
}
http://cvs.php.net/viewvc.cgi/php-src/ext/xmlreader/tests/bug42139.phpt?view=markup&rev=1.1
Index: php-src/ext/xmlreader/tests/bug42139.phpt
+++ php-src/ext/xmlreader/tests/bug42139.phpt
--TEST--
Bug #42139 (XMLReader option constants are broken using XML())
--SKIPIF--
<?php if (!extension_loaded("xmlreader")) print "skip";
if (LIBXML_VERSION < 20628) die("skip: libxml2 2.6.28+ required");
?>
--FILE--
<?php
$xml = <<<XML
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE root [
<!ELEMENT root ANY>
<!ENTITY x "y">
]>
<root>&x;</root>
XML;
$reader = new XMLReader;
$reader->XML( $xml, NULL, LIBXML_NOENT);
while ( $reader->read() ) {
echo "{$reader->nodeType}, {$reader->name}, {$reader->value}\n";
}
$reader->close();
?>
--EXPECT--
10, root,
1, root,
3, #text, y
15, root,
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php