diff options
author | krakjoe <joe.watkins@live.co.uk> | 2014-04-13 11:07:38 +0100 |
---|---|---|
committer | krakjoe <joe.watkins@live.co.uk> | 2014-04-13 11:07:38 +0100 |
commit | 42355fb9bf590f7d386d7e3b67538cc33ff77056 (patch) | |
tree | fad904eea2fccb2c790246a2441ae6b52022b5be /phpdbg.c | |
parent | 9d72a84f06ecebde47842540f51a6ea601b603ef (diff) | |
parent | b8a4a4c700af6373c87b955e64808f1b927f7ccc (diff) | |
download | php-git-42355fb9bf590f7d386d7e3b67538cc33ff77056.tar.gz |
Merge branch 'master' of https://github.com/krakjoe/phpdbg into watchpoints_recursive
Conflicts:
config.m4
phpdbg.c
phpdbg_prompt.c
Diffstat (limited to 'phpdbg.c')
-rw-r--r-- | phpdbg.c | 50 |
1 files changed, 24 insertions, 26 deletions
@@ -145,6 +145,7 @@ static void php_phpdbg_destroy_registered(void *data) /* {{{ */ function TSRMLS_CC); } /* }}} */ + static PHP_RINIT_FUNCTION(phpdbg) /* {{{ */ { zend_hash_init(&PHPDBG_G(bp)[PHPDBG_BREAK_FILE], 8, NULL, php_phpdbg_destroy_bp_file, 0); @@ -273,28 +274,7 @@ static PHP_FUNCTION(phpdbg_break) } phpdbg_parse_param(expr, expr_len, ¶m TSRMLS_CC); - - switch (type) { - case METHOD_PARAM: - phpdbg_do_break_method(¶m, NULL TSRMLS_CC); - break; - - case FILE_PARAM: - phpdbg_do_break_file(¶m, NULL TSRMLS_CC); - break; - - case NUMERIC_PARAM: - phpdbg_do_break_lineno(¶m, NULL TSRMLS_CC); - break; - - case STR_PARAM: - phpdbg_do_break_func(¶m, NULL TSRMLS_CC); - break; - - default: zend_error( - E_WARNING, "unrecognized parameter type %ld", type); - } - + phpdbg_do_break(¶m TSRMLS_CC); phpdbg_clear_param(¶m TSRMLS_CC); } else if (EG(current_execute_data) && EG(active_op_array)) { @@ -1203,7 +1183,16 @@ phpdbg_main: sigaction(SIGBUS, &signal_struct, &PHPDBG_G(old_sigsegv_signal)); #endif - php_request_startup(TSRMLS_C); + if (php_request_startup(TSRMLS_C) == SUCCESS) {; + int i; + + SG(request_info).argc = argc - php_optind + 1; + SG(request_info).argv = emalloc(SG(request_info).argc * sizeof(char *)); + for (i = SG(request_info).argc; --i;) { + SG(request_info).argv[i] = estrdup(argv[php_optind - 1 + i]); + } + SG(request_info).argv[i] = exec ? estrndup(exec, exec_len) : estrdup(""); + } /* do not install sigint handlers for remote consoles */ /* sending SIGINT then provides a decent way of shutting down the server */ @@ -1238,8 +1227,7 @@ phpdbg_main: PHPDBG_G(io)[PHPDBG_STDERR] = stderr; if (exec) { /* set execution context */ - PHPDBG_G(exec) = phpdbg_resolve_path( - exec TSRMLS_CC); + PHPDBG_G(exec) = phpdbg_resolve_path(exec TSRMLS_CC); PHPDBG_G(exec_len) = strlen(PHPDBG_G(exec)); free(exec); @@ -1287,7 +1275,7 @@ phpdbg_main: if (run) { /* no need to try{}, run does it ... */ - PHPDBG_COMMAND_HANDLER(run)(NULL, NULL TSRMLS_CC); + PHPDBG_COMMAND_HANDLER(run)(NULL TSRMLS_CC); if (run > 1) { /* if -r is on the command line more than once just quit */ goto phpdbg_out; @@ -1359,6 +1347,16 @@ phpdbg_out: } phpdbg_out: #endif + + { + int i; + /* free argv */ + for (i = SG(request_info).argc; --i;) { + efree(SG(request_info).argv[i]); + } + efree(SG(request_info).argv); + } + #ifndef ZTS /* force cleanup of auto and core globals */ zend_hash_clean(CG(auto_globals)); |