Skip to content

Commit f6ff3a2

Browse files
committed
Fixed bug #64230 (XMLReader does not suppress errors)
1 parent dc3d360 commit f6ff3a2

File tree

3 files changed

+51
-2
lines changed

3 files changed

+51
-2
lines changed

NEWS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ PHP NEWS
88

99
- XMLReader:
1010
. Fixed bug #51936 (Crash with clone XMLReader). (Mike)
11+
. Fixed bug #64230 (XMLReader does not suppress errors). (Mike)
1112

1213

1314
?? ??? 2013, PHP 5.4.21

ext/xmlreader/php_xmlreader.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -805,7 +805,6 @@ PHP_METHOD(xmlreader, read)
805805
if (intern != NULL && intern->ptr != NULL) {
806806
retval = xmlTextReaderRead(intern->ptr);
807807
if (retval == -1) {
808-
php_error_docref(NULL TSRMLS_CC, E_WARNING, "An Error Occurred while reading");
809808
RETURN_FALSE;
810809
} else {
811810
RETURN_BOOL(retval);
@@ -847,7 +846,6 @@ PHP_METHOD(xmlreader, next)
847846
retval = xmlTextReaderNext(intern->ptr);
848847
}
849848
if (retval == -1) {
850-
php_error_docref(NULL TSRMLS_CC, E_WARNING, "An Error Occurred while reading");
851849
RETURN_FALSE;
852850
} else {
853851
RETURN_BOOL(retval);

ext/xmlreader/tests/bug64230.phpt

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
--TEST--
2+
Bug #64230 (XMLReader does not suppress errors)
3+
--SKIPIF--
4+
<?php
5+
extension_loaded("xmlreader") or die("skip requires xmlreader");
6+
?>
7+
--FILE--
8+
<?php
9+
echo "Test\n";
10+
11+
function show_internal_errors() {
12+
foreach (libxml_get_errors() as $error) {
13+
printf("Internal: %s\n", $error->message);
14+
}
15+
libxml_clear_errors();
16+
}
17+
18+
echo "Internal errors TRUE\n";
19+
libxml_use_internal_errors(true);
20+
21+
$x = new XMLReader;
22+
$x->xml("<root att/>");
23+
$x->read();
24+
25+
show_internal_errors();
26+
27+
echo "Internal errors FALSE\n";
28+
libxml_use_internal_errors(false);
29+
30+
$x = new XMLReader;
31+
$x->xml("<root att/>");
32+
$x->read();
33+
34+
show_internal_errors();
35+
36+
?>
37+
Done
38+
--EXPECTF--
39+
Test
40+
Internal errors TRUE
41+
Internal: Specification mandate value for attribute att
42+
43+
Internal errors FALSE
44+
45+
Warning: XMLReader::read(): %s: parser error : Specification mandate value for attribute att in %s on line %d
46+
47+
Warning: XMLReader::read(): <root att/> in %s on line %d
48+
49+
Warning: XMLReader::read(): ^ in %s on line %d
50+
Done

0 commit comments

Comments
 (0)