From fac2718eddf247122a6073de8c642b0db53e03f3 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Tue, 7 Jun 2005 13:14:23 +0000 Subject: [PATCH] Fixed memory leak in debug_print_backtrace() --- Zend/zend_builtin_functions.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c index 34fe3db7c0..9fb2bfd68d 100644 --- a/Zend/zend_builtin_functions.c +++ b/Zend/zend_builtin_functions.c @@ -1685,7 +1685,9 @@ ZEND_FUNCTION(debug_print_backtrace) array_init(return_value); while (ptr) { - class_name = call_type = NULL; + char *free_class_name = NULL; + + class_name = call_type = NULL; arg_array = NULL; if (ptr->op_array) { filename = ptr->op_array->filename; @@ -1702,8 +1704,9 @@ ZEND_FUNCTION(debug_print_backtrace) 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; + class_name = Z_OBJCE(*ptr->object)->name; + } else { + free_class_name = class_name; } call_type = "->"; } else if (ptr->function_state.function->common.scope) { @@ -1769,6 +1772,9 @@ ZEND_FUNCTION(debug_print_backtrace) include_filename = filename; ptr = ptr->prev_execute_data; ++indent; + if (free_class_name) { + efree(free_class_name); + } } } -- 2.50.1