#24951 [Opn->Ver]: ob_flash() and ob_clean() destroy output handler

From: Date: Tue, 05 Aug 2003 16:02:48 +0000
Subject: #24951 [Opn->Ver]: ob_flash() and ob_clean() destroy output handler
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-45399@lists.php.net to get a copy of this message
ID: 24951 Updated by: sniper@php.net Reported By: d dot stogov at turck dot spb dot ru -Status: Open +Status: Verified Bug Type: Output Control Operating System: Linux -PHP Version: 4.3.2 +PHP Version: 4.3.3RC3-dev Previous Comments: ------------------------------------------------------------------------ [2003-08-05 08:31:35] d dot stogov at turck dot spb dot ru 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 this bug report at http://bugs.php.net/?id=24951&edit=1

« previous php.bugs (#45399) next »