From: Felipe Pena Date: Sun, 10 Nov 2013 20:30:24 +0000 (-0200) Subject: - Improved phpdbg_set_breakpoint_symbol function X-Git-Tag: php-5.6.0alpha1~110^2~515^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=fb4f94c52c81fc7be5b16d814c362de310deff38;p=php - Improved phpdbg_set_breakpoint_symbol function --- diff --git a/phpdbg_bp.c b/phpdbg_bp.c index 5229a0b7b5..9085533c0c 100644 --- a/phpdbg_bp.c +++ b/phpdbg_bp.c @@ -66,14 +66,13 @@ void phpdbg_set_breakpoint_file(const char *path, long line_num TSRMLS_DC) /* {{ zend_llist_add_element(break_files_ptr, &new_break); } /* }}} */ -void phpdbg_set_breakpoint_symbol(const char *expr, const char *opline_num_pos TSRMLS_DC) /* {{{ */ +void phpdbg_set_breakpoint_symbol(const char *name, long opline_num TSRMLS_DC) /* {{{ */ { - long opline_num = opline_num_pos ? strtol(opline_num_pos+1, NULL, 0) : 0; phpdbg_breaksymbol_t new_break; zend_llist *break_sym_ptr; - size_t name_len = opline_num_pos ? opline_num_pos - expr : strlen(expr); + size_t name_len = strlen(name); - new_break.symbol = estrndup(expr, name_len); + new_break.symbol = estrndup(name, name_len + 1); new_break.opline_num = opline_num; PHPDBG_G(has_sym_bp) = 1; diff --git a/phpdbg_bp.h b/phpdbg_bp.h index 49035be550..45f4239eaf 100644 --- a/phpdbg_bp.h +++ b/phpdbg_bp.h @@ -39,7 +39,7 @@ typedef struct _phpdbg_breaksymbol_t { } phpdbg_breaksymbol_t; void phpdbg_set_breakpoint_file(const char*, long TSRMLS_DC); -void phpdbg_set_breakpoint_symbol(const char*, const char* TSRMLS_DC); +void phpdbg_set_breakpoint_symbol(const char*, long TSRMLS_DC); int phpdbg_find_breakpoint_file(zend_op_array* TSRMLS_DC); int phpdbg_find_breakpoint_symbol(zend_function* TSRMLS_DC); diff --git a/phpdbg_prompt.c b/phpdbg_prompt.c index 5e3b968b9f..8591d02945 100644 --- a/phpdbg_prompt.c +++ b/phpdbg_prompt.c @@ -225,9 +225,15 @@ static PHPDBG_COMMAND(break) /* {{{ */ phpdbg_set_breakpoint_file(resolved_name, line_num TSRMLS_CC); } else { - const char *opline_num_pos = zend_memrchr(expr, '#', expr_len); + char name[200]; + const char *opnum_pos = zend_memrchr(expr, '#', expr_len); + long opline_num = opnum_pos ? strtol(opnum_pos+1, NULL, 0) : 0; + size_t name_len = opnum_pos ? opnum_pos - expr : strlen(expr); - phpdbg_set_breakpoint_symbol(expr, opline_num_pos TSRMLS_CC); + memcpy(name, expr, name_len); + name[name_len] = 0; + + phpdbg_set_breakpoint_symbol(name, opline_num TSRMLS_CC); } return SUCCESS;