diff options
author | Joe Watkins <krakjoe@php.net> | 2019-03-27 00:02:43 +0100 |
---|---|---|
committer | Joe Watkins <krakjoe@php.net> | 2019-03-27 00:02:43 +0100 |
commit | f177a2ac586124374e13b93da0c0b9e0e4980ff6 (patch) | |
tree | 95870733aff32f187629a8856f00c1394769cadc /sapi/phpdbg/phpdbg_bp.c | |
parent | 903c1e379ba91663313ee76d2e7075283d2a3a7c (diff) | |
parent | 1e4cff9ddb810a9038a8613719d7f91ad8bda64f (diff) | |
download | php-git-f177a2ac586124374e13b93da0c0b9e0e4980ff6.tar.gz |
Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3:
more work on phpdbg conditional breaks
Diffstat (limited to 'sapi/phpdbg/phpdbg_bp.c')
-rw-r--r-- | sapi/phpdbg/phpdbg_bp.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/sapi/phpdbg/phpdbg_bp.c b/sapi/phpdbg/phpdbg_bp.c index a7253250d6..3a47c78470 100644 --- a/sapi/phpdbg/phpdbg_bp.c +++ b/sapi/phpdbg/phpdbg_bp.c @@ -53,6 +53,7 @@ static inline void _phpdbg_break_mapping(int id, HashTable *table) /* {{{ */ zend_hash_index_del(&PHPDBG_G(bp)[PHPDBG_BREAK_MAP], (id)) #define PHPDBG_BREAK_INIT(b, t) do {\ + memset(&b, 0, sizeof(b)); \ b.id = PHPDBG_G(bp_count)++; \ b.type = t; \ b.disabled = 0;\ @@ -192,6 +193,24 @@ PHPDBG_API void phpdbg_export_breakpoints_to_string(char **str) /* {{{ */ if (conditional->paramed) { switch (conditional->param.type) { + case NUMERIC_FUNCTION_PARAM: + phpdbg_asprintf(&new_str, + "%sbreak at %s#%ld if %s\n", + *str, conditional->param.str, conditional->param.num, conditional->code); + break; + + case NUMERIC_METHOD_PARAM: + phpdbg_asprintf(&new_str, + "%sbreak at %s::%s#%ld if %s\n", + *str, conditional->param.method.class, conditional->param.method.name, conditional->param.num, conditional->code); + break; + + case ADDR_PARAM: + phpdbg_asprintf(&new_str, + "%sbreak at 0X%lx if %s\n", + *str, conditional->param.addr, conditional->code); + break; + case STR_PARAM: phpdbg_asprintf(&new_str, "%sbreak at %s if %s\n", *str, conditional->param.str, conditional->code); @@ -835,6 +854,20 @@ static inline void phpdbg_create_conditional_break(phpdbg_breakcond_t *brake, co new_break.paramed = 1; phpdbg_copy_param( param, &new_break.param); + if (new_break.param.type == FILE_PARAM || + new_break.param.type == NUMERIC_FILE_PARAM) { + char realpath[MAXPATHLEN]; + + if (VCWD_REALPATH(new_break.param.file.name, realpath)) { + efree(new_break.param.file.name); + + new_break.param.file.name = estrdup(realpath); + } else { + phpdbg_error("eval", "type=\"invalidparameter\"", "Invalid file for conditional break %s", new_break.param.file.name); + phpdbg_clear_param(&new_break.param); + return; + } + } } else { new_break.paramed = 0; } |