]> granicus.if.org Git - php/commitdiff
Fixed phpdbg zend_bailout error when compiling syntax error code
authorReeze Xia <reeze@php.net>
Fri, 13 Feb 2015 09:45:43 +0000 (17:45 +0800)
committerReeze Xia <reeze@php.net>
Fri, 13 Feb 2015 09:47:47 +0000 (17:47 +0800)
@krakjoe if there is something wrong, tell me plz

sapi/phpdbg/phpdbg.c
sapi/phpdbg/tests/commands/0107_compile.test [new file with mode: 0644]

index 3337f05cdc8fabe5005eb98618e52e0e4151f79d..74bf84adff94f65ac585398f5fb979e7fbf578de 100644 (file)
@@ -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 (file)
index 0000000..4842cb7
--- /dev/null
@@ -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, "<?error echo \"Hello World\"; ?>");
+phpdbg_exec(OUT);
+:>
+run
+quit