mirror of
https://github.com/php/php-src.git
synced 2026-04-26 09:28:21 +02:00
d59aac58b3
The php_stream_read() and php_stream_write() functions now return an ssize_t value, with negative results indicating failure. Functions like fread() and fwrite() will return false in that case. As a special case, EWOULDBLOCK and EAGAIN on non-blocking streams should not be regarded as error conditions, and be reported as successful zero-length reads/writes instead. The handling of EINTR remains unclear and is internally inconsistent (e.g. some code-paths will automatically retry on EINTR, while some won't). I'm landing this now to make sure the stream wrapper ops API changes make it into 7.4 -- however, if the user-facing changes turn out to be problematic we have the option of clamping negative returns to zero in php_stream_read() and php_stream_write() to restore the old behavior in a relatively non-intrusive manner.
24 lines
424 B
PHP
24 lines
424 B
PHP
--TEST--
|
|
Bug #72613 (Inadequate error handling in bzread())
|
|
--SKIPIF--
|
|
<?php if (!extension_loaded("bz2")) print "skip"; ?>
|
|
--FILE--
|
|
<?php
|
|
$fp = bzopen(__DIR__.'/72613.bz2', 'r');
|
|
if ($fp === FALSE) {
|
|
exit("ERROR: bzopen()");
|
|
}
|
|
$data = "";
|
|
while (!feof($fp)) {
|
|
$res = bzread($fp);
|
|
if ($res === FALSE) {
|
|
exit("ERROR: bzread()");
|
|
}
|
|
$data .= $res;
|
|
}
|
|
bzclose($fp);
|
|
?>
|
|
DONE
|
|
--EXPECT--
|
|
ERROR: bzread()
|