diff options
| author | Dmitry Stogov <dmitry@php.net> | 2005-06-07 13:14:23 +0000 |
|---|---|---|
| committer | Dmitry Stogov <dmitry@php.net> | 2005-06-07 13:14:23 +0000 |
| commit | fac2718eddf247122a6073de8c642b0db53e03f3 (patch) | |
| tree | 42b7e21d962a7cfeba6240ba51d62ecb67d62e4c | |
| parent | bf9471683883ea38a50b2b96208ef21802905ba2 (diff) | |
| download | php-git-fac2718eddf247122a6073de8c642b0db53e03f3.tar.gz | |
Fixed memory leak in debug_print_backtrace()
| -rw-r--r-- | Zend/zend_builtin_functions.c | 12 |
1 files 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); + } } } |
