]> granicus.if.org Git - php/commitdiff
fix backtraces - non-Zend classes have names too
authorStanislav Malyshev <stas@php.net>
Mon, 4 Apr 2005 17:22:20 +0000 (17:22 +0000)
committerStanislav Malyshev <stas@php.net>
Mon, 4 Apr 2005 17:22:20 +0000 (17:22 +0000)
Zend/zend_builtin_functions.c

index 3b9b81378f0e650bcb11927fa29b577a3d6464fd..b8d00f215838b45105d4b4cb8770dafa8839310c 100644 (file)
@@ -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;