summaryrefslogtreecommitdiff
path: root/main/output.c
diff options
context:
space:
mode:
Diffstat (limited to 'main/output.c')
-rw-r--r--main/output.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/main/output.c b/main/output.c
index 63d9b2d8f1..d8a10cfa6d 100644
--- a/main/output.c
+++ b/main/output.c
@@ -482,12 +482,11 @@ static int php_ub_body_write(const char *str, uint str_length TSRMLS_DC)
Turn on Output Buffering (specifying an optional output handler). */
PHP_FUNCTION(ob_start)
{
- zval *output_handler;
+ zval *output_handler=NULL;
uint chunk_size=0;
switch (ZEND_NUM_ARGS()) {
case 0:
- output_handler = NULL;
break;
case 1: {
zval **output_handler_p;
@@ -506,9 +505,11 @@ PHP_FUNCTION(ob_start)
if (zend_get_parameters_ex(2, &output_handler_p, &chunk_size_p)==FAILURE) {
RETURN_FALSE;
}
- SEPARATE_ZVAL(output_handler_p);
- output_handler = *output_handler_p;
- output_handler->refcount++;
+ if (Z_STRLEN_PP(output_handler_p)>0) {
+ SEPARATE_ZVAL(output_handler_p);
+ output_handler = *output_handler_p;
+ output_handler->refcount++;
+ }
convert_to_long_ex(chunk_size_p);
chunk_size = (uint) Z_LVAL_PP(chunk_size_p);
}