diff options
| author | Thies C. Arntzen <thies@php.net> | 2002-10-21 08:48:55 +0000 |
|---|---|---|
| committer | Thies C. Arntzen <thies@php.net> | 2002-10-21 08:48:55 +0000 |
| commit | d7648f440ce75e1fd530e61833e637f889ea15d4 (patch) | |
| tree | 229da16666a936aace6a35bc0e95fd14d11def5f /Zend/zend_builtin_functions.c | |
| parent | b26f6233d8a6203d591e0f989ed95bd0f8b3e5d7 (diff) | |
| download | php-git-d7648f440ce75e1fd530e61833e637f889ea15d4.tar.gz | |
MFZE1
Diffstat (limited to 'Zend/zend_builtin_functions.c')
| -rw-r--r-- | Zend/zend_builtin_functions.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c index abbab065e2..dd423366f1 100644 --- a/Zend/zend_builtin_functions.c +++ b/Zend/zend_builtin_functions.c @@ -1306,6 +1306,7 @@ ZEND_FUNCTION(debug_backtrace) void **cur_arg_pos = EG(argument_stack).top_element; void **args = cur_arg_pos; int arg_stack_consistent = 0; + int frames_on_stack = 0; if (ZEND_NUM_ARGS()) { WRONG_PARAM_COUNT; @@ -1316,6 +1317,7 @@ ZEND_FUNCTION(debug_backtrace) break; } args -= *(ulong*)args; + frames_on_stack++; if (args == EG(argument_stack).elements) { arg_stack_consistent = 1; @@ -1328,6 +1330,7 @@ ZEND_FUNCTION(debug_backtrace) /* skip debug_backtrace() */ ptr = ptr->prev_execute_data; cur_arg_pos -= 2; + frames_on_stack--; array_init(return_value); @@ -1370,8 +1373,9 @@ ZEND_FUNCTION(debug_backtrace) } if ((! ptr->opline) || ((ptr->opline->opcode == ZEND_DO_FCALL_BY_NAME) || (ptr->opline->opcode == ZEND_DO_FCALL))) { - if (arg_stack_consistent) { + if (arg_stack_consistent && (frames_on_stack > 0)) { add_assoc_zval_ex(stack_frame, "args", sizeof("args"), debug_backtrace_get_args(&cur_arg_pos TSRMLS_CC)); + frames_on_stack--; } } } else { |
