summaryrefslogtreecommitdiff
path: root/Zend/zend_builtin_functions.c
diff options
context:
space:
mode:
Diffstat (limited to 'Zend/zend_builtin_functions.c')
-rw-r--r--Zend/zend_builtin_functions.c28
1 files changed, 18 insertions, 10 deletions
diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c
index df4e7bd3ee..ba54430bbe 100644
--- a/Zend/zend_builtin_functions.c
+++ b/Zend/zend_builtin_functions.c
@@ -1713,12 +1713,16 @@ ZEND_FUNCTION(debug_print_backtrace)
if (function_name) {
if (ptr->object) {
- zend_uint class_name_len;
- if (Z_OBJ_HT_P(ptr->object)->get_class_name == NULL ||
- Z_OBJ_HT_P(ptr->object)->get_class_name(ptr->object, &class_name, &class_name_len, 0 TSRMLS_CC) != SUCCESS) {
- class_name = Z_OBJCE(*ptr->object)->name;
+ if (ptr->function_state.function->common.scope) {
+ class_name = ptr->function_state.function->common.scope->name;
} else {
- free_class_name = class_name;
+ zend_uint class_name_len;
+ if (Z_OBJ_HT_P(ptr->object)->get_class_name == NULL ||
+ Z_OBJ_HT_P(ptr->object)->get_class_name(ptr->object, &class_name, &class_name_len, 0 TSRMLS_CC) != SUCCESS) {
+ class_name = Z_OBJCE(*ptr->object)->name;
+ } else {
+ free_class_name = class_name;
+ }
}
call_type = "->";
} else if (ptr->function_state.function->common.scope) {
@@ -1870,12 +1874,16 @@ ZEND_API void zend_fetch_debug_backtrace(zval *return_value, int skip_last TSRML
add_assoc_string_ex(stack_frame, "function", sizeof("function"), function_name, 1);
if (ptr->object && Z_TYPE_P(ptr->object) == IS_OBJECT) {
- zend_uint class_name_len;
- if (Z_OBJ_HT_P(ptr->object)->get_class_name == NULL ||
- Z_OBJ_HT_P(ptr->object)->get_class_name(ptr->object, &class_name, &class_name_len, 0 TSRMLS_CC) != SUCCESS) {
- add_assoc_string_ex(stack_frame, "class", sizeof("class"), Z_OBJCE(*ptr->object)->name, 1);
+ if (ptr->function_state.function->common.scope) {
+ add_assoc_string_ex(stack_frame, "class", sizeof("class"), ptr->function_state.function->common.scope->name, 1);
} else {
- add_assoc_string_ex(stack_frame, "class", sizeof("class"), class_name, 0);
+ zend_uint class_name_len;
+ if (Z_OBJ_HT_P(ptr->object)->get_class_name == NULL ||
+ Z_OBJ_HT_P(ptr->object)->get_class_name(ptr->object, &class_name, &class_name_len, 0 TSRMLS_CC) != SUCCESS) {
+ add_assoc_string_ex(stack_frame, "class", sizeof("class"), Z_OBJCE(*ptr->object)->name, 1);
+ } else {
+ add_assoc_string_ex(stack_frame, "class", sizeof("class"), class_name, 0);
+ }
}
add_assoc_string_ex(stack_frame, "type", sizeof("type"), "->", 1);
} else if (ptr->function_state.function->common.scope) {