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

Reply via email to