rrichards Thu Sep 20 09:30:17 2007 UTC Added files: /php-src/ext/xmlreader/tests bug42139.phpt
Modified files: /php-src/ext/xmlreader php_xmlreader.c Log: 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.47&r2=1.48&diff_format=u Index: php-src/ext/xmlreader/php_xmlreader.c diff -u php-src/ext/xmlreader/php_xmlreader.c:1.47 php-src/ext/xmlreader/php_xmlreader.c:1.48 --- php-src/ext/xmlreader/php_xmlreader.c:1.47 Thu Jul 26 13:19:22 2007 +++ php-src/ext/xmlreader/php_xmlreader.c Thu Sep 20 09:30:16 2007 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_xmlreader.c,v 1.47 2007/07/26 13:19:22 bjori Exp $ */ +/* $Id: php_xmlreader.c,v 1.48 2007/09/20 09:30:16 rrichards Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -1096,7 +1096,7 @@ xmlreader_object *intern = NULL; zstr source; char *uri = NULL, *encoding = NULL; - int resolved_path_len; + int resolved_path_len, ret = 0; char *directory=NULL, resolved_path[MAXPATHLEN]; xmlParserInputBufferPtr inputbfr; xmlTextReaderPtr reader = NULL; @@ -1150,15 +1150,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