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

Reply via email to