From: Thies C. Arntzen Date: Wed, 28 Aug 2002 15:05:15 +0000 (+0000) Subject: debug_backtrace() X-Git-Tag: RELEASE_0_91~196 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=eef3e66f1f3e0803022aa34e67a0279314cb8bd6;p=php debug_backtrace() - make args passed to functions called vy call_user_function available again. --- diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c index b3be63433c..95ba4efbf1 100644 --- a/Zend/zend_builtin_functions.c +++ b/Zend/zend_builtin_functions.c @@ -1280,8 +1280,6 @@ ZEND_FUNCTION(debug_backtrace) char *include_filename = NULL; zval *stack_frame; void **cur_arg_pos = EG(argument_stack).top_element; - int get_args; - if (ZEND_NUM_ARGS()) { WRONG_PARAM_COUNT; @@ -1312,11 +1310,6 @@ ZEND_FUNCTION(debug_backtrace) /* try to fetch args only if an FCALL was just made - elsewise we're in the middle of a function * and debug_baktrace() might have been called by the error_handler. in this case we don't * want to pop anything of the argument-stack */ - if ((ptr->opline->opcode == ZEND_DO_FCALL_BY_NAME) || (ptr->opline->opcode == ZEND_DO_FCALL)) { - get_args = 1; - } else { - get_args = 0; - } } else { filename = NULL; } @@ -1342,7 +1335,7 @@ ZEND_FUNCTION(debug_backtrace) add_assoc_string_ex(stack_frame, "type", sizeof("type"), call_type, 1); } - if (get_args) { + if ((! ptr->opline) || ((ptr->opline->opcode == ZEND_DO_FCALL_BY_NAME) || (ptr->opline->opcode == ZEND_DO_FCALL))) { add_assoc_zval_ex(stack_frame, "args", sizeof("args"), debug_backtrace_get_args(&cur_arg_pos TSRMLS_CC)); } } else { diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c index 7c2bc2659b..03a8304cd9 100644 --- a/Zend/zend_execute_API.c +++ b/Zend/zend_execute_API.c @@ -477,6 +477,7 @@ int call_user_function_ex(HashTable *function_table, zval **object_pp, zval *fun EX(object) = NULL; EX(Ts) = NULL; EX(op_array) = NULL; + EX(opline) = NULL; *retval_ptr_ptr = NULL; if (function_name->type==IS_ARRAY) { /* assume array($obj, $name) couple */