]> granicus.if.org Git - php/commitdiff
Fixed bug #71234 (INI files are loaded even invoked as phpdbg -n --version)
authorBob Weinand <bobwei9@hotmail.com>
Sun, 16 Oct 2016 13:41:37 +0000 (15:41 +0200)
committerBob Weinand <bobwei9@hotmail.com>
Sun, 16 Oct 2016 13:41:37 +0000 (15:41 +0200)
NEWS
sapi/phpdbg/phpdbg.c

diff --git a/NEWS b/NEWS
index 67401958d1587adfeaaef33e40bf886bd72c396e..08b4f64ac3b1ed5e247485e797b1f08ac79f9fba 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -23,7 +23,8 @@ PHP                                                                        NEWS
   . Add -s command line option / stdin command for reading script from stdin.
     (Bob)
   . Ignore non-executable opcodes in line mode of phpdbg_end_oplog(). (Bob)
-  . Fixed bug #70776 (Simple SIGINT does not have any effect). (Bob)
+  . Fixed bug #70776 (Simple SIGINT does not have any effect with -rr). (Bob)
+  . Fixed bug #71234 (INI files are loaded even invoked as -n --version). (Bob)
 
 - Session:
   . Fixed bug #73273 (session_unset() empties values from all variables in which
index e7012d09058e3eb4500b5637b0215493b4a9959c..de73c69ee7ca75e1d2d76f8754d4adc5f1a0b97d 100644 (file)
@@ -1362,6 +1362,7 @@ int main(int argc, char **argv) /* {{{ */
        int exit_status;
        char *read_from_stdin = NULL;
        zend_string *backup_phpdbg_compile = NULL;
+       zend_bool show_help = 0, show_version = 0;
 
 #ifndef _WIN32
        struct sigaction sigio_struct;
@@ -1556,34 +1557,11 @@ phpdbg_main:
                        } break;
 
                        case 'h': {
-                               sapi_startup(phpdbg);
-                               phpdbg->startup(phpdbg);
-                               PHPDBG_G(flags) = 0;
-                               /* It ain't gonna proceed to real execution anyway,
-                                       but the correct descriptor is needed already. */
-                               PHPDBG_G(io)[PHPDBG_STDOUT].ptr = stdout;
-                               PHPDBG_G(io)[PHPDBG_STDOUT].fd = fileno(stdout);
-                               phpdbg_set_prompt(PHPDBG_DEFAULT_PROMPT);
-                               phpdbg_do_help(NULL);
-                               sapi_deactivate();
-                               sapi_shutdown();
-                               return 0;
+                               show_help = 1;
                        } break;
 
                        case 'V': {
-                               sapi_startup(phpdbg);
-                               phpdbg->startup(phpdbg);
-                               printf(
-                                       "phpdbg %s (built: %s %s)\nPHP %s, Copyright (c) 1997-2016 The PHP Group\n%s",
-                                       PHPDBG_VERSION,
-                                       __DATE__,
-                                       __TIME__,
-                                       PHP_VERSION,
-                                       get_zend_version()
-                               );
-                               sapi_deactivate();
-                               sapi_shutdown();
-                               return 0;
+                               show_version = 1;
                        } break;
                }
 
@@ -1662,6 +1640,51 @@ phpdbg_main:
                /* set flags from command line */
                PHPDBG_G(flags) = flags;
 
+               /* set default colors */
+               phpdbg_set_color_ex(PHPDBG_COLOR_PROMPT,  PHPDBG_STRL("white-bold"));
+               phpdbg_set_color_ex(PHPDBG_COLOR_ERROR,   PHPDBG_STRL("red-bold"));
+               phpdbg_set_color_ex(PHPDBG_COLOR_NOTICE,  PHPDBG_STRL("green"));
+
+               /* set default prompt */
+               phpdbg_set_prompt(PHPDBG_DEFAULT_PROMPT);
+
+               if (show_version || show_help) {
+                       /* It ain't gonna proceed to real execution anyway,
+                               but the correct descriptor is needed already. */
+                       PHPDBG_G(io)[PHPDBG_STDOUT].ptr = stdout;
+                       PHPDBG_G(io)[PHPDBG_STDOUT].fd = fileno(stdout);
+                       if (show_help) {
+                               phpdbg_do_help(NULL);
+                       } else if (show_version) {
+                               phpdbg_out(
+                                       "phpdbg %s (built: %s %s)\nPHP %s, Copyright (c) 1997-2016 The PHP Group\n%s",
+                                       PHPDBG_VERSION,
+                                       __DATE__,
+                                       __TIME__,
+                                       PHP_VERSION,
+                                       get_zend_version()
+                               );
+                       }
+                       sapi_deactivate();
+                       sapi_shutdown();
+                       if (ini_entries) {
+                               free(ini_entries);
+                       }
+                       if (ini_override) {
+                               free(ini_override);
+                       }
+                       if (exec) {
+                               free(exec);
+                       }
+                       if (oplog_file) {
+                               free(oplog_file);
+                       }
+                       if (init_file) {
+                               free(init_file);
+                       }
+                       goto free_and_return;
+               }
+
                if (settings > (zend_phpdbg_globals *) 0x2) {
 #ifdef ZTS
                        *((zend_phpdbg_globals *) (*((void ***) TSRMLS_CACHE))[TSRM_UNSHUFFLE_RSRC_ID(phpdbg_globals_id)]) = *settings;
@@ -1821,14 +1844,6 @@ phpdbg_main:
                        oplog_file = NULL;
                }
 
-               /* set default colors */
-               phpdbg_set_color_ex(PHPDBG_COLOR_PROMPT,  PHPDBG_STRL("white-bold"));
-               phpdbg_set_color_ex(PHPDBG_COLOR_ERROR,   PHPDBG_STRL("red-bold"));
-               phpdbg_set_color_ex(PHPDBG_COLOR_NOTICE,  PHPDBG_STRL("green"));
-
-               /* set default prompt */
-               phpdbg_set_prompt(PHPDBG_DEFAULT_PROMPT);
-
                {
                        php_stream_wrapper *wrapper = zend_hash_str_find_ptr(php_stream_get_url_stream_wrappers_hash(), ZEND_STRL("php"));
                        PHPDBG_G(orig_url_wrap_php) = wrapper->wops->stream_opener;
@@ -2131,6 +2146,7 @@ phpdbg_out:
                sapi_shutdown();
        }
 
+free_and_return:
        if (read_from_stdin) {
                free(read_from_stdin);
                read_from_stdin = NULL;