mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
Fix Bug #66736 fpassthru broken
This commit is contained in:
parent
7ab5c593f7
commit
d08b4dbf23
3 changed files with 22 additions and 2 deletions
1
NEWS
1
NEWS
|
@ -7,6 +7,7 @@ PHP NEWS
|
|||
. Fixed bug #64330 (stream_socket_server() creates wrong Abstract Namespace
|
||||
UNIX sockets). (Mike)
|
||||
. Fixed bug #66182 (exit in stream filter produces segfault). (Mike)
|
||||
. Fixed bug #66736 (fpassthru broken). (Mike)
|
||||
|
||||
- Embed:
|
||||
. Fixed bug #65715 (php5embed.lib isn't provided anymore). (Anatol)
|
||||
|
|
|
@ -234,6 +234,13 @@ PHPAPI int php_output_get_status(TSRMLS_D)
|
|||
* Unbuffered write */
|
||||
PHPAPI int php_output_write_unbuffered(const char *str, size_t len TSRMLS_DC)
|
||||
{
|
||||
#if PHP_DEBUG
|
||||
if (len > UINT_MAX) {
|
||||
php_error(E_WARNING, "Attempt to output more than UINT_MAX bytes at once; "
|
||||
"output will be truncated %lu => %lu",
|
||||
(unsigned long) len, (unsigned long) (len % UINT_MAX));
|
||||
}
|
||||
#endif
|
||||
if (OG(flags) & PHP_OUTPUT_DISABLED) {
|
||||
return 0;
|
||||
}
|
||||
|
@ -248,6 +255,13 @@ PHPAPI int php_output_write_unbuffered(const char *str, size_t len TSRMLS_DC)
|
|||
* Buffered write */
|
||||
PHPAPI int php_output_write(const char *str, size_t len TSRMLS_DC)
|
||||
{
|
||||
#if PHP_DEBUG
|
||||
if (len > UINT_MAX) {
|
||||
php_error(E_WARNING, "Attempt to output more than UINT_MAX bytes at once; "
|
||||
"output will be truncated %lu => %lu",
|
||||
(unsigned long) len, (unsigned long) (len % UINT_MAX));
|
||||
}
|
||||
#endif
|
||||
if (OG(flags) & PHP_OUTPUT_DISABLED) {
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -1405,11 +1405,16 @@ PHPAPI size_t _php_stream_passthru(php_stream * stream STREAMS_DC TSRMLS_DC)
|
|||
p = php_stream_mmap_range(stream, php_stream_tell(stream), PHP_STREAM_MMAP_ALL, PHP_STREAM_MAP_MODE_SHARED_READONLY, &mapped);
|
||||
|
||||
if (p) {
|
||||
PHPWRITE(p, mapped);
|
||||
do {
|
||||
/* output functions return int, so pass in int max */
|
||||
if (0 < (b = PHPWRITE(p, MIN(mapped - bcount, INT_MAX)))) {
|
||||
bcount += b;
|
||||
}
|
||||
} while (b > 0 && mapped > bcount);
|
||||
|
||||
php_stream_mmap_unmap_ex(stream, mapped);
|
||||
|
||||
return mapped;
|
||||
return bcount;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue