]> granicus.if.org Git - php/commitdiff
- Improved phpdbg_set_breakpoint_symbol function
authorFelipe Pena <felipensp@gmail.com>
Sun, 10 Nov 2013 20:30:24 +0000 (18:30 -0200)
committerFelipe Pena <felipensp@gmail.com>
Sun, 10 Nov 2013 20:30:24 +0000 (18:30 -0200)
phpdbg_bp.c
phpdbg_bp.h
phpdbg_prompt.c

index 5229a0b7b55398ad644799fd3f477c134d7551b5..9085533c0ca2c2b9135f0d9b832aa0ee95f0a123 100644 (file)
@@ -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;
index 49035be550c6484c5fbd3542443b383ea87e0dcf..45f4239eafd5ec9b56ee62a3036d176fac838360 100644 (file)
@@ -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);
index 5e3b968b9f25a89a5a70558b66565df24a1696e3..8591d02945ac0b4aa148429e55c3f7097652f84e 100644 (file)
@@ -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;