Browse Source

Merge branch 'PHP-5.4' into PHP-5.5

* PHP-5.4:
  Fix Bug #66736 	fpassthru broken
pull/643/head
Michael Wallner 12 years ago
parent
commit
bbd25ca01f
  1. 14
      main/output.c
  2. 9
      main/streams/streams.c

14
main/output.c

@ -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;
}

9
main/streams/streams.c

@ -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…
Cancel
Save