mirror of
https://github.com/php/php-src.git
synced 2024-11-24 18:34:21 +08:00
Merge branch 'PHP-5.4' into PHP-5.5
* PHP-5.4: Fix Bug #66736 fpassthru broken
This commit is contained in:
commit
bbd25ca01f
@ -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;
|
||||
}
|
||||
|
@ -1400,11 +1400,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…
Reference in New Issue
Block a user