summaryrefslogtreecommitdiff
path: root/ext/xmlreader
diff options
context:
space:
mode:
authorRasmus Lerdorf <rasmus@php.net>2013-10-31 16:23:38 -0700
committerRasmus Lerdorf <rasmus@php.net>2013-10-31 16:23:38 -0700
commitbb42643ae02c6bb522db169748d29e4be6695b1e (patch)
tree25b73836901583f8e42f5a9c6fe235f88efe7d8e /ext/xmlreader
parent6b68f44e6b46dffd7fe029eca7afc37f1fa57347 (diff)
parent55ee543e2f73c45c8fa2c51ebef9820a610f70b4 (diff)
downloadphp-git-bb42643ae02c6bb522db169748d29e4be6695b1e.tar.gz
Merge branch 'PHP-5.5' of git.php.net:php-src into PHP-5.5
* 'PHP-5.5' of git.php.net:php-src: (107 commits) Typo fix: umknown -> unknown add news entry about FPM backlog change Fix bug #66008 updated libs_versions.txt Update NEWS Update NEWS Fixed Bug 64760 var_export() does not use full precision for floating-point numbers add bundled libzip LICENSE, as required by BSD License terms - Updated to version 2013.8 (2013h) Use zval* instead of zval** Increased limit for opcache.max_accelerated_files to 1,000,000. (Chris) Improved performance of array_merge() by eliminating useless copying Improved performance of func_get_args() by eliminating useless copying Link to more readmes increase backlog to the highest value everywhere Update NEWS Fixed bug #65950 Field name truncation if the field name is bigger than 32 characters - Updated to version 2013.7 (2013g) Increment version number, since this will be 5.5.6. Added Zend Debugger to the note about the load order (by trash4you at online dot de) ...
Diffstat (limited to 'ext/xmlreader')
-rw-r--r--ext/xmlreader/php_xmlreader.c3
-rw-r--r--ext/xmlreader/tests/bug51936.phpt22
-rw-r--r--ext/xmlreader/tests/bug64230.phpt50
3 files changed, 73 insertions, 2 deletions
diff --git a/ext/xmlreader/php_xmlreader.c b/ext/xmlreader/php_xmlreader.c
index 02ebc7738e..aae55c8b3e 100644
--- a/ext/xmlreader/php_xmlreader.c
+++ b/ext/xmlreader/php_xmlreader.c
@@ -805,7 +805,6 @@ PHP_METHOD(xmlreader, read)
if (intern != NULL && intern->ptr != NULL) {
retval = xmlTextReaderRead(intern->ptr);
if (retval == -1) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "An Error Occurred while reading");
RETURN_FALSE;
} else {
RETURN_BOOL(retval);
@@ -847,7 +846,6 @@ PHP_METHOD(xmlreader, next)
retval = xmlTextReaderNext(intern->ptr);
}
if (retval == -1) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "An Error Occurred while reading");
RETURN_FALSE;
} else {
RETURN_BOOL(retval);
@@ -1320,6 +1318,7 @@ PHP_MINIT_FUNCTION(xmlreader)
xmlreader_object_handlers.read_property = xmlreader_read_property;
xmlreader_object_handlers.write_property = xmlreader_write_property;
xmlreader_object_handlers.get_property_ptr_ptr = xmlreader_get_property_ptr_ptr;
+ xmlreader_object_handlers.clone_obj = NULL;
INIT_CLASS_ENTRY(ce, "XMLReader", xmlreader_functions);
ce.create_object = xmlreader_objects_new;
diff --git a/ext/xmlreader/tests/bug51936.phpt b/ext/xmlreader/tests/bug51936.phpt
new file mode 100644
index 0000000000..4b5f1012e7
--- /dev/null
+++ b/ext/xmlreader/tests/bug51936.phpt
@@ -0,0 +1,22 @@
+--TEST--
+Bug #51936 (Crash with clone XMLReader)
+--SKIPIF--
+<?php
+extension_loaded("xmlreader") or die("skip requires xmlreader");
+?>
+--FILE--
+<?php
+echo "Test\n";
+
+$xmlreader = new XMLReader();
+$xmlreader->xml("<a><b/></a>");
+
+$xmlreader->next();
+$xmlreader2 = clone $xmlreader;
+$xmlreader2->next();
+?>
+Done
+--EXPECTF--
+Test
+
+Fatal error: Trying to clone an uncloneable object of class XMLReader in %s on line %d
diff --git a/ext/xmlreader/tests/bug64230.phpt b/ext/xmlreader/tests/bug64230.phpt
new file mode 100644
index 0000000000..0b070925f3
--- /dev/null
+++ b/ext/xmlreader/tests/bug64230.phpt
@@ -0,0 +1,50 @@
+--TEST--
+Bug #64230 (XMLReader does not suppress errors)
+--SKIPIF--
+<?php
+extension_loaded("xmlreader") or die("skip requires xmlreader");
+?>
+--FILE--
+<?php
+echo "Test\n";
+
+function show_internal_errors() {
+ foreach (libxml_get_errors() as $error) {
+ printf("Internal: %s\n", $error->message);
+ }
+ libxml_clear_errors();
+}
+
+echo "Internal errors TRUE\n";
+libxml_use_internal_errors(true);
+
+$x = new XMLReader;
+$x->xml("<root att/>");
+$x->read();
+
+show_internal_errors();
+
+echo "Internal errors FALSE\n";
+libxml_use_internal_errors(false);
+
+$x = new XMLReader;
+$x->xml("<root att/>");
+$x->read();
+
+show_internal_errors();
+
+?>
+Done
+--EXPECTF--
+Test
+Internal errors TRUE
+Internal: Specification mandate value for attribute att
+
+Internal errors FALSE
+
+Warning: XMLReader::read(): %s: parser error : Specification mandate value for attribute att in %s on line %d
+
+Warning: XMLReader::read(): <root att/> in %s on line %d
+
+Warning: XMLReader::read(): ^ in %s on line %d
+Done