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;
} 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);
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;