summaryrefslogtreecommitdiff
path: root/Zend/zend_builtin_functions.c
diff options
context:
space:
mode:
authorThies C. Arntzen <thies@php.net>2002-08-23 13:50:42 +0000
committerThies C. Arntzen <thies@php.net>2002-08-23 13:50:42 +0000
commit7ed2d363c8b5bf23dd94def28c185a7babde220c (patch)
treeaf6732e23e661b1f74c6ed89d3644c266dc627de /Zend/zend_builtin_functions.c
parent10b58f2110a6210326e5d9b13a1fd99086fd0333 (diff)
downloadphp-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.c18
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;