char *final_buffer=NULL;
int final_buffer_length=0;
zval *alternate_buffer=NULL;
- char *to_be_destroyed_buffer;
+ char *to_be_destroyed_buffer, *to_be_destroyed_output_buffer;
int status;
SLS_FETCH();
OLS_FETCH();
}
to_be_destroyed_buffer = OG(active_ob_buffer).buffer;
+ to_be_destroyed_output_buffer = OG(active_ob_buffer).internal_output_handler_buffer;
if (!just_flush) {
- if (OG(active_ob_buffer).internal_output_handler
- && (final_buffer != OG(active_ob_buffer).internal_output_handler_buffer)) {
- efree(final_buffer);
- }
if (OG(nesting_level)>1) { /* restore previous buffer */
php_ob_buffer *ob_buffer_p;
if (!just_flush) {
efree(to_be_destroyed_buffer);
+ if (to_be_destroyed_output_buffer) {
+ efree(to_be_destroyed_output_buffer);
+ }
OG(nesting_level)--;
} else {
OG(active_ob_buffer).text_length = 0;
OG(active_ob_buffer).status |= PHP_OUTPUT_HANDLER_START;
OG(php_body_write) = php_b_body_write;
+ if (OG(active_ob_buffer).internal_output_handler
+ && final_buffer != OG(active_ob_buffer).internal_output_handler_buffer) {
+ efree(final_buffer);
+ }
}
}
char *final_buffer=NULL;
int final_buffer_length=0;
zval *alternate_buffer=NULL;
- char *to_be_destroyed_buffer;
+ char *to_be_destroyed_buffer, *to_be_destroyed_output_buffer;
int status;
SLS_FETCH();
OLS_FETCH();
}
to_be_destroyed_buffer = OG(active_ob_buffer).buffer;
+ to_be_destroyed_output_buffer = OG(active_ob_buffer).internal_output_handler_buffer;
if (!just_flush) {
- if (OG(active_ob_buffer).internal_output_handler
- && (final_buffer != OG(active_ob_buffer).internal_output_handler_buffer)) {
- efree(final_buffer);
- }
if (OG(nesting_level)>1) { /* restore previous buffer */
php_ob_buffer *ob_buffer_p;
if (!just_flush) {
efree(to_be_destroyed_buffer);
+ if (to_be_destroyed_output_buffer) {
+ efree(to_be_destroyed_output_buffer);
+ }
OG(nesting_level)--;
} else {
OG(active_ob_buffer).text_length = 0;
OG(active_ob_buffer).status |= PHP_OUTPUT_HANDLER_START;
OG(php_body_write) = php_b_body_write;
+ if (OG(active_ob_buffer).internal_output_handler
+ && final_buffer != OG(active_ob_buffer).internal_output_handler_buffer) {
+ efree(final_buffer);
+ }
}
}