ID:               30578
 Updated by:       [EMAIL PROTECTED]
 Reported By:      anthony at ectrolinux dot com
-Status:           Open
+Status:           Closed
 Bug Type:         Output Control
 Operating System: *
 PHP Version:      5CVS-2005-03-07
 New Comment:

This bug has been fixed in CVS.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
 
Thank you for the report, and for helping us make PHP better.

Fix will be in PHP 5.1



Previous Comments:
------------------------------------------------------------------------

[2004-10-27 08:09:59] anthony at ectrolinux dot com

Description:
------------
During script termination, PHP's explicit output buffer flush should
wait until all variables have gone -completely- out of scope. Using an
instantiated object that manages buffers, the data has already been
flushed before __destruct() is called, which prevents the script from
properly finalizing data collection and flushing the output normally.
This is not the appropriate behavior.

Reproduce code:
---------------
<?php

error_reporting(E_ALL);


class Example
{
    function __construct()
    {
        ob_start();
        echo 'This should be displayed last.'."\n";
    }

    function __destruct()
    {
        $buffered_data = ob_get_contents();
        ob_end_clean();

        echo 'This should be displayed first.'."\n";
        echo 'Buffered data: '. $buffered_data;
    }
}


$obj = new Example;

?>

Expected result:
----------------
This should be displayed first.
Buffered data: This should be displayed last.

Actual result:
--------------
This should be displayed last.

Notice: ob_end_clean(): failed to delete buffer. No buffer to delete.
in /--snip--/test.php on line 17
This should be displayed first.
Buffered data: 


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=30578&edit=1

Reply via email to