diff options
author | Thies C. Arntzen <thies@php.net> | 2002-08-23 13:50:42 +0000 |
---|---|---|
committer | Thies C. Arntzen <thies@php.net> | 2002-08-23 13:50:42 +0000 |
commit | 7ed2d363c8b5bf23dd94def28c185a7babde220c (patch) | |
tree | af6732e23e661b1f74c6ed89d3644c266dc627de /Zend/zend_builtin_functions.c | |
parent | 10b58f2110a6210326e5d9b13a1fd99086fd0333 (diff) | |
download | php-git-7ed2d363c8b5bf23dd94def28c185a7babde220c.tar.gz |
- debug_backtrace:
added "type" ('->' or '::') for object calls.
made calls done thru call_user_func show-up correct in backtraces.
andi,
does this look correct to you?
Diffstat (limited to 'Zend/zend_builtin_functions.c')
-rw-r--r-- | Zend/zend_builtin_functions.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c index f58ab23876..424078d3d0 100644 --- a/Zend/zend_builtin_functions.c +++ b/Zend/zend_builtin_functions.c @@ -1273,24 +1273,28 @@ ZEND_FUNCTION(debug_backtrace) if (ptr->object) { class_name = Z_OBJCE(*ptr->object)->name; - } - if (ptr->function_state.function->common.scope) { + add_assoc_string_ex(stack_frame, "type", sizeof("type"), "->", 1); + } else if (ptr->function_state.function->common.scope) { class_name = ptr->function_state.function->common.scope->name; + add_assoc_string_ex(stack_frame, "type", sizeof("type"), "::", 1); } function_name = ptr->function_state.function->common.function_name; - filename = ptr->op_array->filename; - lineno = ptr->opline->lineno; + if (ptr->op_array) { + filename = ptr->op_array->filename; + lineno = ptr->opline->lineno; + add_assoc_string_ex(stack_frame, "file", sizeof("file"), filename, 1); + add_assoc_long_ex(stack_frame, "line", sizeof("line"), lineno); + } if (function_name) { add_assoc_string_ex(stack_frame, "function", sizeof("function"), function_name, 1); } + if (class_name) { add_assoc_string_ex(stack_frame, "class", sizeof("class"), class_name, 1); } - add_assoc_string_ex(stack_frame, "file", sizeof("file"), filename, 1); - add_assoc_long_ex(stack_frame, "line", sizeof("line"), lineno); - /* add_assoc_stringl_ex(stack_frame, "class", sizeof("class")-1, class_name, class_name_length, 1); */ + add_next_index_zval(return_value, stack_frame); ptr = ptr->prev_execute_data; |