diff options
author | Stanley Sufficool <ssufficool@php.net> | 2013-10-05 09:57:13 -0700 |
---|---|---|
committer | Stanley Sufficool <ssufficool@php.net> | 2013-10-05 09:57:13 -0700 |
commit | d74b9cfee528936a50af7772c3dc56843a068c7f (patch) | |
tree | 42c00e21011c95d6f493805ea870f419b42e7880 /ext/xmlreader | |
parent | 690bbe170d9ed4597629e4e986575fbe0a2cb796 (diff) | |
parent | 3aaee86ee33af276d2e879f5a645cc6dc850de22 (diff) | |
download | php-git-d74b9cfee528936a50af7772c3dc56843a068c7f.tar.gz |
Merge branch 'PHP-5.4' of https://git.php.net/push/php-src into PHP-5.4
* 'PHP-5.4' of https://git.php.net/push/php-src:
- Fixed bug #65818 (Segfault with built-in webserver and chunked transfer encoding)
- BFN
Fix bug #65667: ftp_nb_continue produces segfault
fix bug #64146 (serialize incorrectly saving objects when they are cloned)
such a weird hack probably helps in finding regressions in the future
Fixed bug #64230 (XMLReader does not suppress errors)
typo: really fix bug #51936 Crash with clone xmlreader
fix bug #59613 (Crash with clone XMLReader)
fix bug #65808 the socket_connect() won't work with IPv6 address
5.4.22-dev now
fix bug #62396 'make test' crashes starting with 5.3.14 (missing gzencode())
Fixed bug #61548
fix test
fix memleak on resetting rebind_proc
Fix bug #65322: compile time errors won't trigger auto loading
5.4.20 release date
Add information about which INI file is which inside respective files
- Updated to version 2013.6 (2013f)
Diffstat (limited to 'ext/xmlreader')
-rw-r--r-- | ext/xmlreader/php_xmlreader.c | 3 | ||||
-rw-r--r-- | ext/xmlreader/tests/bug51936.phpt | 22 | ||||
-rw-r--r-- | ext/xmlreader/tests/bug64230.phpt | 50 |
3 files changed, 73 insertions, 2 deletions
diff --git a/ext/xmlreader/php_xmlreader.c b/ext/xmlreader/php_xmlreader.c index f4c2643212..adf282120e 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 |