summaryrefslogtreecommitdiff
path: root/Zend/zend_builtin_functions.c
diff options
context:
space:
mode:
authorThies C. Arntzen <thies@php.net>2002-10-21 08:48:55 +0000
committerThies C. Arntzen <thies@php.net>2002-10-21 08:48:55 +0000
commitd7648f440ce75e1fd530e61833e637f889ea15d4 (patch)
tree229da16666a936aace6a35bc0e95fd14d11def5f /Zend/zend_builtin_functions.c
parentb26f6233d8a6203d591e0f989ed95bd0f8b3e5d7 (diff)
downloadphp-git-d7648f440ce75e1fd530e61833e637f889ea15d4.tar.gz
MFZE1
Diffstat (limited to 'Zend/zend_builtin_functions.c')
-rw-r--r--Zend/zend_builtin_functions.c6
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 {