From: Andi Gutmans Date: Wed, 8 May 2002 18:43:19 +0000 (+0000) Subject: - Hopefully fix problems with debug_backtrace() X-Git-Tag: php-4.3.0dev-ZendEngine2-Preview1~188 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=14a81f91e3228a46420302a20670bf16419a2c6a;p=php - Hopefully fix problems with debug_backtrace() --- diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c index 23fce3ce43..15cfee45c8 100644 --- a/Zend/zend_builtin_functions.c +++ b/Zend/zend_builtin_functions.c @@ -1203,9 +1203,12 @@ ZEND_FUNCTION(debug_backtrace) if (ptr->object) { printf("%s::", Z_OBJCE(*ptr->object)->name); } + if (ptr->function_state.function->common.scope) { + printf("%s::", ptr->function_state.function->common.scope->name); + } function_name = ptr->function_state.function->common.function_name; if (!function_name) { - function_name = "main"; + function_name = "_main_"; } ptr = ptr->prev_execute_data; diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index 27a818f8a7..4fa0d3b302 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -2748,12 +2748,25 @@ send_by_ref: FREE_OP(EX(Ts), &EX(opline)->op1, EG(free_op1)); EX(Ts)[EX(opline)->result.u.var].var.ptr_ptr = &EX(Ts)[EX(opline)->result.u.var].var.ptr; if (new_op_array) { + zval *saved_object; + zend_function *saved_function; + + EG(return_value_ptr_ptr) = EX(Ts)[EX(opline)->result.u.var].var.ptr_ptr; EG(active_op_array) = new_op_array; EX(Ts)[EX(opline)->result.u.var].var.ptr = NULL; + saved_object = EX(object); + saved_function = EX(function_state).function; + + EX(function_state).function = (zend_function *) new_op_array; + EX(object) = NULL; + zend_execute(new_op_array TSRMLS_CC); + EX(function_state).function = saved_function; + EX(object) = saved_object; + if (!return_value_used) { if (EX(Ts)[EX(opline)->result.u.var].var.ptr) { zval_ptr_dtor(&EX(Ts)[EX(opline)->result.u.var].var.ptr);