}
if (chunk_size < 0) {
chunk_size = 0;
- } else if (chunk_size == 1) {
- chunk_size = 4096;
}
if (SUCCESS != php_output_start_user(output_handler, chunk_size, flags TSRMLS_CC)) {
--TEST--
-Bug #46903 (ob_start(): Special $chunk_size value of 1 is not honoured in HEAD)
+Bug #46903: ob_start(): In HEAD, $chunk_size value of 1 should not have any special behaviour (Updated as per: http://marc.info/?l=php-internals&m=123476465621346&w=2)
--FILE--
<?php
function flushCounter($input) {
echo "2";
?>
--EXPECTF--
-[1] int(4096)
-12
\ No newline at end of file
+[1] int(1)
+
+[2] 1
+[3] 2
+[4]
\ No newline at end of file
--TEST--
-ob_start() chunk_size: confirm buffer is flushed after any output call that causes its length to equal or exceed chunk_size.
+ob_start() chunk_size: confirm buffer is flushed after any output call that causes its length to equal or exceed chunk_size.
--FILE--
<?php
/*
* proto bool ob_start([ string|array user_function [, int chunk_size [, bool erase]]])
* Function is implemented in main/output.c
*/
-
+// In HEAD, $chunk_size value of 1 should not have any special behaviour (http://marc.info/?l=php-internals&m=123476465621346&w=2).
function callback($string) {
global $callback_invocations;
$callback_invocations++;
f[call:1; len:8]12345678
----( chunk_size: 1, output append size: 1 )----
-f[call:1; len:8]12345678
+f[call:1; len:1]1
+f[call:2; len:1]2
+f[call:3; len:1]3
+f[call:4; len:1]4
+f[call:5; len:1]5
+f[call:6; len:1]6
+f[call:7; len:1]7
+f[call:8; len:1]8
+f[call:9; len:0]
----( chunk_size: 2, output append size: 1 )----
f[call:1; len:2]12
f[call:1; len:8]12345678
----( chunk_size: 1, output append size: 4 )----
-f[call:1; len:8]12345678
+f[call:1; len:4]1234
+f[call:2; len:4]5678
+f[call:3; len:0]
----( chunk_size: 2, output append size: 4 )----
f[call:1; len:4]1234