]> granicus.if.org Git - php/commitdiff
Fixed memory leak in debug_backtrace()
authorDmitry Stogov <dmitry@php.net>
Mon, 18 Apr 2005 07:24:25 +0000 (07:24 +0000)
committerDmitry Stogov <dmitry@php.net>
Mon, 18 Apr 2005 07:24:25 +0000 (07:24 +0000)
Zend/zend_builtin_functions.c
Zend/zend_execute.c

index b8d00f215838b45105d4b4cb8770dafa8839310c..1988e3a992f070f454fbde06c78d2964904401e0 100644 (file)
@@ -1687,7 +1687,6 @@ ZEND_API void zend_fetch_debug_backtrace(zval *return_value, int skip_last TSRML
        char *function_name;
        char *filename;
        char *class_name;
-       char *call_type;
        char *include_filename = NULL;
        zval *stack_frame;
        void **cur_arg_pos = EG(argument_stack).top_element;
@@ -1746,21 +1745,14 @@ ZEND_API void zend_fetch_debug_backtrace(zval *return_value, int skip_last TSRML
                                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;
+                                       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);
                                }
-                               call_type = "->";
+                               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;
-                               call_type = "::";
-                       } else {
-                               class_name = NULL;
-                               call_type = NULL;
-                       }
-
-                       if (class_name) {
-                               add_assoc_string_ex(stack_frame, "class", sizeof("class"), class_name, 1);
-                               add_assoc_string_ex(stack_frame, "type", sizeof("type"), call_type, 1);
+                               add_assoc_string_ex(stack_frame, "class", sizeof("class"), ptr->function_state.function->common.scope->name, 1);
+                               add_assoc_string_ex(stack_frame, "type", sizeof("type"), "::", 1);
                        }
 
                        if ((! ptr->opline) || ((ptr->opline->opcode == ZEND_DO_FCALL_BY_NAME) || (ptr->opline->opcode == ZEND_DO_FCALL))) {
index 9025388962c7f4f65e4e67d9bbd094ed81a37e6a..db2fe20bc5a56d4a7c09caf433fc578f72da6633 100644 (file)
@@ -258,7 +258,6 @@ void zend_assign_to_variable_reference(znode *result, zval **variable_ptr_ptr, z
                        value_ptr->refcount = 1;
                        value_ptr->is_ref = 1;
                }
-
                *variable_ptr_ptr = value_ptr;
                value_ptr->refcount++;
        } else if (!variable_ptr->is_ref) {