Browse Source

MFH: fix bug #42139 (XMLReader option constants are broken using XML())

add test
PHP-5.2.1RC1
Rob Richards 19 years ago
parent
commit
adb1cd835d
  1. 23
      ext/xmlreader/php_xmlreader.c
  2. 31
      ext/xmlreader/tests/bug42139.phpt

23
ext/xmlreader/php_xmlreader.c

@ -1060,7 +1060,7 @@ PHP_METHOD(xmlreader, XML)
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 @@ PHP_METHOD(xmlreader, XML)
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;
}
}

31
ext/xmlreader/tests/bug42139.phpt

@ -0,0 +1,31 @@
--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,
Loading…
Cancel
Save