Skip to content

Commit

Permalink
Merge branch 'PHP-5.5' into PHP-5.6
Browse files Browse the repository at this point in the history
* PHP-5.5:
  Fixed bug #65593 (Segfault when calling ob_start from output buffering callback)
  • Loading branch information
m6w6 committed Feb 18, 2015
2 parents f977a9f + 225af96 commit 0d2a2b9
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 11 deletions.
23 changes: 12 additions & 11 deletions main/output.c
Original file line number Diff line number Diff line change
Expand Up @@ -172,21 +172,22 @@ PHPAPI void php_output_deactivate(TSRMLS_D)
{
php_output_handler **handler = NULL;

php_output_header(TSRMLS_C);
if ((OG(flags) & PHP_OUTPUT_ACTIVATED)) {
php_output_header(TSRMLS_C);

OG(flags) ^= PHP_OUTPUT_ACTIVATED;
OG(active) = NULL;
OG(running) = NULL;
OG(flags) ^= PHP_OUTPUT_ACTIVATED;
OG(active) = NULL;
OG(running) = NULL;

/* release all output handlers */
if (OG(handlers).elements) {
while (SUCCESS == zend_stack_top(&OG(handlers), (void *) &handler)) {
php_output_handler_free(handler TSRMLS_CC);
zend_stack_del_top(&OG(handlers));
/* release all output handlers */
if (OG(handlers).elements) {
while (SUCCESS == zend_stack_top(&OG(handlers), (void *) &handler)) {
php_output_handler_free(handler TSRMLS_CC);
zend_stack_del_top(&OG(handlers));
}
zend_stack_destroy(&OG(handlers));
}
zend_stack_destroy(&OG(handlers));
}

}
/* }}} */

Expand Down
13 changes: 13 additions & 0 deletions tests/output/bug65593.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
--TEST--
Bug #65593 (ob_start(function(){ob_start();});)
--FILE--
<?php
echo "Test\n";

ob_start(function(){ob_start();});
?>
===DONE===
--EXPECT--
Test

Fatal error: Cannot destroy active lambda function in /home/mike/src/php-5.5/tests/output/bug65593.php on line 4

0 comments on commit 0d2a2b9

Please sign in to comment.