Cause: the chunk size is taken from the zlib.output_compression setting,
which is 0 or 1. This causes the block_size for output buffer to be set
to 0 (1 / 2) and thus causes infinite recursion in php_ob_allocate().
Solution: use a value of 0 for the chunk size which will use the default
sizes. Also add a sanity check which will default the block_size to 1
if it ends up as 0.
ZLIBG(ob_gzhandler_status) = 0;
ZLIBG(ob_gzip_coding) = 0;
if (chunk_size) {
+ if (chunk_size == 1)
+ chunk_size = 0; /* use the default size */
php_enable_output_compression(chunk_size TSRMLS_CC);
}
return SUCCESS;
if (chunk_size) {
initial_size = (chunk_size*3/2);
block_size = chunk_size/2;
+ if (block_size == 0)
+ block_size = 1;
} else {
initial_size = 40*1024;
block_size = 10*1024;