cvs: ZendEngine2 / zend_builtin_functions.c
| From: | Thies C. Arntzen | Date: | Fri, 23 Aug 2002 14:44:58 +0000 |
| Subject: | cvs: ZendEngine2 / zend_builtin_functions.c | ||
| Groups: | php.zend-engine.cvs | ||
| Request: | Send a blank email to php-zend-engine-cvs+get-352@lists.php.net to get a copy of this message | ||
thies Fri Aug 23 10:44:58 2002 EDT
Modified files:
/ZendEngine2 zend_builtin_functions.c
Log:
debug_backtrace: show include/require/eval as normal functions on the stack
# the hard bit is to find out the args for those
Index: ZendEngine2/zend_builtin_functions.c
diff -u ZendEngine2/zend_builtin_functions.c:1.134 ZendEngine2/zend_builtin_functions.c:1.135
--- ZendEngine2/zend_builtin_functions.c:1.134 Fri Aug 23 10:28:56 2002
+++ ZendEngine2/zend_builtin_functions.c Fri Aug 23 10:44:58 2002
@@ -1301,7 +1301,6 @@
class_name = ptr->function_state.function->common.scope->name;
add_assoc_string_ex(stack_frame, "type", sizeof("type"), "::", 1);
}
- function_name = ptr->function_state.function->common.function_name;
if (ptr->op_array) {
filename = ptr->op_array->filename;
@@ -1310,15 +1309,30 @@
add_assoc_long_ex(stack_frame, "line", sizeof("line"), lineno);
}
+ function_name = ptr->function_state.function->common.function_name;
+
if (function_name) {
add_assoc_string_ex(stack_frame, "function", sizeof("function"),
function_name, 1);
- }
- if (class_name) {
- add_assoc_string_ex(stack_frame, "class", sizeof("class"), class_name, 1);
- }
+ if (class_name) {
+ add_assoc_string_ex(stack_frame, "class", sizeof("class"), class_name, 1);
+ }
- add_assoc_zval_ex(stack_frame, "args", sizeof("args"),
debug_backtrace_get_args(&cur_arg_pos, 0 TSRMLS_CC));
+ add_assoc_zval_ex(stack_frame, "args", sizeof("args"),
debug_backtrace_get_args(&cur_arg_pos, 0 TSRMLS_CC));
+ } else {
+ /* i know this is kinda ugly, but i'm trying to avoid extra cycles in the main execution
loop */
+
+ switch (ptr->opline->op2.u.constant.value.lval) {
+ case ZEND_EVAL: function_name = "eval"; break;
+ case ZEND_INCLUDE: function_name = "include"; break;
+ case ZEND_REQUIRE: function_name = "require"; break;
+ case ZEND_INCLUDE_ONCE: function_name = "include_once"; break;
+ case ZEND_REQUIRE_ONCE: function_name = "require_once"; break;
+ default: function_name = "unknown - please report a bug"; break;
+ }
+
+ add_assoc_string_ex(stack_frame, "function", sizeof("function"),
function_name, 1);
+ }
add_next_index_zval(return_value, stack_frame);