diff options
| author | Antony Dovgal <tony2001@php.net> | 2007-05-10 16:27:16 +0000 |
|---|---|---|
| committer | Antony Dovgal <tony2001@php.net> | 2007-05-10 16:27:16 +0000 |
| commit | 764b33ef798304cc8e291c72a5b296e79af9f489 (patch) | |
| tree | 22ef8e2a4f3ec3dd78bc0f62c2dda1d8c7e1bb53 | |
| parent | d009d41cb253197299112fccb930d92c193f6aaa (diff) | |
| download | php-git-764b33ef798304cc8e291c72a5b296e79af9f489.tar.gz | |
flush output buffer when/if highlight_string()/php_strip_whitespace()/highlight_string() fail
| -rw-r--r-- | ext/standard/basic_functions.c | 8 | ||||
| -rw-r--r-- | ext/standard/tests/strings/005.phpt | 24 | ||||
| -rw-r--r-- | ext/standard/tests/strings/006.phpt | 19 | ||||
| -rw-r--r-- | ext/standard/tests/strings/007.phpt | 17 |
4 files changed, 68 insertions, 0 deletions
diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c index 833b75d738..a0e710f584 100644 --- a/ext/standard/basic_functions.c +++ b/ext/standard/basic_functions.c @@ -5380,6 +5380,9 @@ PHP_FUNCTION(highlight_file) } if (ret == FAILURE) { + if (i) { + php_output_end(TSRMLS_C); + } RETURN_FALSE; } @@ -5420,6 +5423,7 @@ PHP_FUNCTION(php_strip_whitespace) file_handle.opened_path = NULL; zend_save_lexical_state(&original_lex_state TSRMLS_CC); if (open_file_for_scanning(&file_handle TSRMLS_CC)==FAILURE) { + php_output_end(TSRMLS_C); if (filename_type == IS_UNICODE) { efree(filename); } @@ -5478,6 +5482,10 @@ PHP_FUNCTION(highlight_string) if (highlight_string(*expr, &syntax_highlighter_ini, hicompiled_string_description TSRMLS_CC) == FAILURE) { efree(hicompiled_string_description); + EG(error_reporting) = old_error_reporting; + if (i) { + php_output_end(TSRMLS_C); + } RETURN_FALSE; } efree(hicompiled_string_description); diff --git a/ext/standard/tests/strings/005.phpt b/ext/standard/tests/strings/005.phpt new file mode 100644 index 0000000000..a69ff49425 --- /dev/null +++ b/ext/standard/tests/strings/005.phpt @@ -0,0 +1,24 @@ +--TEST-- +highlight_string(), output buffer and error level +--INI-- +error_reporting=8192 +--FILE-- +<?php + +echo "hello\n"; + +$string = str_repeat("A", 1024); + +var_dump(error_reporting()); +highlight_string($string, true); +var_dump(ob_get_contents()); +var_dump(error_reporting()); + +echo "Done\n"; +?> +--EXPECTF-- +hello +int(8192) +bool(false) +int(8192) +Done diff --git a/ext/standard/tests/strings/006.phpt b/ext/standard/tests/strings/006.phpt new file mode 100644 index 0000000000..f0156ccf6e --- /dev/null +++ b/ext/standard/tests/strings/006.phpt @@ -0,0 +1,19 @@ +--TEST-- +highlight_file() and output buffer +--FILE-- +<?php + +$file = str_repeat("A", 1024); + +var_dump(highlight_file($file, true)); +var_dump(ob_get_contents()); + +echo "Done\n"; +?> +--EXPECTF-- +Warning: highlight_file(AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA in %s on line %d + +Warning: highlight_file(): Failed opening 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA in %s on line %d +bool(false) +bool(false) +Done diff --git a/ext/standard/tests/strings/007.phpt b/ext/standard/tests/strings/007.phpt new file mode 100644 index 0000000000..e0e5163892 --- /dev/null +++ b/ext/standard/tests/strings/007.phpt @@ -0,0 +1,17 @@ +--TEST-- +php_strip_whitespace() and output buffer +--FILE-- +<?php + +$file = str_repeat("A", 1024); + +var_dump(php_strip_whitespace($file)); +var_dump(ob_get_contents()); + +echo "Done\n"; +?> +--EXPECTF-- +Warning: php_strip_whitespace(AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA in %s on line %d +string(0) "" +bool(false) +Done |
