? debug_print_backtrace_as_string.diff.txt ? debug_print_backtrace_ret_string.diff.txt ? zend_builtin_functions_orig.c Index: zend_builtin_functions.c =================================================================== RCS file: /repository/ZendEngine2/zend_builtin_functions.c,v retrieving revision 1.226 diff -u -r1.226 zend_builtin_functions.c --- zend_builtin_functions.c 14 Mar 2004 22:40:25 -0000 1.226 +++ zend_builtin_functions.c 18 Mar 2004 22:55:34 -0000 @@ -1418,7 +1418,7 @@ } } -/* {{{ proto void debug_print_backtrace(void) */ +/* {{{ proto mixed debug_print_backtrace([bool return_as_string]) */ ZEND_FUNCTION(debug_print_backtrace) { zend_execute_data *ptr; @@ -1434,11 +1434,14 @@ int arg_stack_consistent = 0; int frames_on_stack = 0; int indent = 0; + zend_bool return_as_string = 0; - if (ZEND_NUM_ARGS()) { - ZEND_WRONG_PARAM_COUNT(); + if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|b", &return_as_string)) { + RETURN_FALSE; + } + if (return_as_string) { + php_start_ob_buffer (NULL, 0, 1 TSRMLS_CC); } - while (--args >= EG(argument_stack).elements) { if (*args--) { break; @@ -1459,8 +1462,6 @@ cur_arg_pos -= 2; frames_on_stack--; - array_init(return_value); - while (ptr) { if (ptr->op_array) { filename = ptr->op_array->filename; @@ -1540,6 +1541,12 @@ ptr = ptr->prev_execute_data; ++indent; } + if (return_as_string) { + php_ob_get_buffer(return_value TSRMLS_CC); + php_end_ob_buffer(0, 0 TSRMLS_CC); + } else { + RETURN_TRUE; + } } /* }}} */