From: d dot stogov at turck dot spb dot ru
Operating system: Linux
PHP version: 4.3.2
PHP Bug Type: Output Control
Bug description: ob_flash() and ob_clean() destroy output handler
Description:
------------
The C function "php_end_ob_buffer" from "main/output.c" destroys
output_handler on first call so the second call to output_handler is not
possible. "php_end_ob_buffer" is called by "ob_flush()" and "ob_clean()"
those must not destroy output handler.
Look into line 250:
zval_ptr_dtor(&OG(active_ob_buffer).output_handler);
The same error is in PHP-4.3.3RC2 too.
Reproduce code:
---------------
<?php
function test($s,$mode) {
return (($mode & PHP_OUTPUT_HANDLER_START)?"[":"").
$s.
(($mode & PHP_OUTPUT_HANDLER_END)?"]\n":"");
}
function t1() {
ob_start("test");
echo "Hello from t1 1 ";
echo "Hello from t1 2 ";
ob_end_flush();
}
function t2() {
ob_start("test");
echo "Hello from t2 1 ";
ob_flush();
echo "Hello from t2 2 ";
ob_end_flush();
}
function t3() {
ob_start("test");
echo "Hello from t3 1 ";
ob_clean();
echo "Hello from t3 2 ";
ob_end_flush();
}
t1(); echo "\n";
t2(); echo "\n";
t3(); echo "\n";
?>
Expected result:
----------------
[Hello from t1 1 Hello from t1 2 ]
[Hello from t2 1 Hello from t2 2]
[Hello from t3 2]
Actual result:
--------------
[Hello from t1 1 Hello from t1 2 ]
[Hello from t2 1 Hello from t2 2
Hello from t3 2
--
Edit bug report at http://bugs.php.net/?id=24951&edit=1
--
Try a CVS snapshot (php4): http://bugs.php.net/fix.php?id=24951&r=trysnapshot4
Try a CVS snapshot (php5): http://bugs.php.net/fix.php?id=24951&r=trysnapshot5
Fixed in CVS: http://bugs.php.net/fix.php?id=24951&r=fixedcvs
Fixed in release: http://bugs.php.net/fix.php?id=24951&r=alreadyfixed
Need backtrace: http://bugs.php.net/fix.php?id=24951&r=needtrace
Try newer version: http://bugs.php.net/fix.php?id=24951&r=oldversion
Not developer issue: http://bugs.php.net/fix.php?id=24951&r=support
Expected behavior: http://bugs.php.net/fix.php?id=24951&r=notwrong
Not enough info: http://bugs.php.net/fix.php?id=24951&r=notenoughinfo
Submitted twice: http://bugs.php.net/fix.php?id=24951&r=submittedtwice
register_globals: http://bugs.php.net/fix.php?id=24951&r=globals
PHP 3 support discontinued: http://bugs.php.net/fix.php?id=24951&r=php3
Daylight Savings: http://bugs.php.net/fix.php?id=24951&r=dst
IIS Stability: http://bugs.php.net/fix.php?id=24951&r=isapi
Install GNU Sed: http://bugs.php.net/fix.php?id=24951&r=gnused