From: Stanislav Malyshev Date: Mon, 4 Apr 2005 17:22:20 +0000 (+0000) Subject: fix backtraces - non-Zend classes have names too X-Git-Tag: php-5.0.5RC1~488 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b1efdfae47eab451188d15cbd94029ace5b6a8c1;p=php fix backtraces - non-Zend classes have names too --- diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c index 3b9b81378f..b8d00f2158 100644 --- a/Zend/zend_builtin_functions.c +++ b/Zend/zend_builtin_functions.c @@ -1605,7 +1605,12 @@ ZEND_FUNCTION(debug_print_backtrace) if (function_name) { if (ptr->object) { - class_name = Z_OBJCE(*ptr->object)->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; + } call_type = "->"; } else if (ptr->function_state.function->common.scope) { class_name = ptr->function_state.function->common.scope->name; @@ -1738,7 +1743,12 @@ 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) { - class_name = Z_OBJCE(*ptr->object)->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; + } call_type = "->"; } else if (ptr->function_state.function->common.scope) { class_name = ptr->function_state.function->common.scope->name;