From 46d957294599abee450b893b6bc4275b27954e30 Mon Sep 17 00:00:00 2001 From: Reeze Xia Date: Fri, 13 Feb 2015 17:45:43 +0800 Subject: [PATCH] Fixed phpdbg zend_bailout error when compiling syntax error code @krakjoe if there is something wrong, tell me plz --- sapi/phpdbg/phpdbg.c | 13 ++++++++++++- sapi/phpdbg/tests/commands/0107_compile.test | 17 +++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 sapi/phpdbg/tests/commands/0107_compile.test diff --git a/sapi/phpdbg/phpdbg.c b/sapi/phpdbg/phpdbg.c index 3337f05cdc..74bf84adff 100644 --- a/sapi/phpdbg/phpdbg.c +++ b/sapi/phpdbg/phpdbg.c @@ -65,6 +65,7 @@ PHP_INI_BEGIN() PHP_INI_END() static zend_bool phpdbg_booted = 0; +static zend_bool phpdbg_fully_started = 0; #if PHP_VERSION_ID >= 50500 void (*zend_execute_old)(zend_execute_data *execute_data); @@ -523,6 +524,10 @@ static void php_sapi_phpdbg_log_message(char *message) /* {{{ */ phpdbg_list_file(file, 3, zend_get_executed_lineno() - 1, zend_get_executed_lineno()); efree(file); + if (!phpdbg_fully_started) { + return; + } + do { switch (phpdbg_interactive(1)) { case PHPDBG_LEAVE: @@ -1476,7 +1481,11 @@ phpdbg_main: if (settings) { PHPDBG_G(flags) |= PHPDBG_DISCARD_OUTPUT; } - phpdbg_compile(); + + zend_try { + phpdbg_compile(); + } zend_end_try(); + PHPDBG_G(flags) &= ~PHPDBG_DISCARD_OUTPUT; } @@ -1485,6 +1494,8 @@ phpdbg_main: PHPDBG_G(flags) |= PHPDBG_IS_STEPPING; } + phpdbg_fully_started = 1; + /* #ifndef for making compiler shutting up */ #ifndef _WIN32 phpdbg_interact: diff --git a/sapi/phpdbg/tests/commands/0107_compile.test b/sapi/phpdbg/tests/commands/0107_compile.test new file mode 100644 index 0000000000..4842cb74f1 --- /dev/null +++ b/sapi/phpdbg/tests/commands/0107_compile.test @@ -0,0 +1,17 @@ +################################################# +# name: compile +# purpose: test compiling error code +# expect: TEST::FORMAT +# options: -rr +################################################# +#[PHP Parse error: syntax error, unexpected 'echo' (T_ECHO) in %s on line %s] +#[Could not find information about included file...] +################################################# +<: +define('OUT', + tempnam(null, "phpdbg")); +file_put_contents(OUT, ""); +phpdbg_exec(OUT); +:> +run +quit -- 2.40.0