diff --git a/main/output.c b/main/output.c index fb589a2a3b41e..5a7ed7b1a2338 100644 --- a/main/output.c +++ b/main/output.c @@ -225,6 +225,17 @@ PHPAPI void php_end_ob_buffer(zend_bool send_buffer, zend_bool just_flush TSRMLS zval *orig_buffer; zval *z_status; + if(OG(ob_lock)) { + if (SG(headers_sent) && !SG(request_info).headers_only) { + OG(php_body_write) = php_ub_body_write_no_header; + } else { + OG(php_body_write) = php_ub_body_write; + } + OG(ob_nesting_level) = 0; + php_error_docref("ref.outcontrol" TSRMLS_CC, E_ERROR, "Cannot use output buffering in output buffering display handlers"); + return; + } + ALLOC_INIT_ZVAL(orig_buffer); ZVAL_STRINGL(orig_buffer, OG(active_ob_buffer).buffer, OG(active_ob_buffer).text_length, 1); diff --git a/tests/output/ob_011.phpt b/tests/output/ob_011.phpt index a90fd56f8396c..35b038833907f 100644 --- a/tests/output/ob_011.phpt +++ b/tests/output/ob_011.phpt @@ -1,7 +1,5 @@ --TEST-- output buffering - fatalism ---XFAIL-- -This test will fail until the fix in revision r214155 is backported from php 6 --FILE--