]> granicus.if.org Git - php/commitdiff
Need to tell zend_fetch_debug_backtrace() whether to skip top function or not.
authorMarcus Boerger <helly@php.net>
Fri, 29 Aug 2003 00:16:00 +0000 (00:16 +0000)
committerMarcus Boerger <helly@php.net>
Fri, 29 Aug 2003 00:16:00 +0000 (00:16 +0000)
# And i wondered why the trace wasn't rally accurate.

Zend/zend_builtin_functions.c
Zend/zend_builtin_functions.h
Zend/zend_default_classes.c
Zend/zend_exceptions.c

index 3c4bce4e7657945c75a9bac9ed9da3bc3e550656..8aa08d55e185089b96aa9a4a80ede946da6b838b 100644 (file)
@@ -1538,7 +1538,7 @@ ZEND_FUNCTION(debug_print_backtrace)
 
 /* }}} */
 
-ZEND_API void zend_fetch_debug_backtrace(zval *return_value TSRMLS_DC)
+ZEND_API void zend_fetch_debug_backtrace(zval *return_value, int skip_last TSRMLS_DC)
 {
        zend_execute_data *ptr;
        int lineno;
@@ -1568,10 +1568,12 @@ ZEND_API void zend_fetch_debug_backtrace(zval *return_value TSRMLS_DC)
 
        ptr = EG(current_execute_data);
 
-       /* skip debug_backtrace() */
-       ptr = ptr->prev_execute_data;
-       cur_arg_pos -= 2;
-       frames_on_stack--;
+               /* skip debug_backtrace() */
+               ptr = ptr->prev_execute_data;
+       if (skip_last) {
+               cur_arg_pos -= 2;
+               frames_on_stack--;
+       }
 
        array_init(return_value);
 
@@ -1683,7 +1685,7 @@ ZEND_FUNCTION(debug_backtrace)
                ZEND_WRONG_PARAM_COUNT();
        }
        
-       zend_fetch_debug_backtrace(return_value TSRMLS_CC);
+       zend_fetch_debug_backtrace(return_value, 1 TSRMLS_CC);
 }
 /* }}} */
 
index 3367ff3e664863caeded8813ccaebbd7f7c853ba..755fad05e9a27e151ef82a08afffc6858f93d381 100644 (file)
@@ -23,7 +23,7 @@
 #define ZEND_BUILTIN_FUNCTIONS_H
 
 int zend_startup_builtin_functions(TSRMLS_D);
-ZEND_API void zend_fetch_debug_backtrace(zval *return_value TSRMLS_DC);
+ZEND_API void zend_fetch_debug_backtrace(zval *return_value, int skip_last TSRMLS_DC);
 
 #endif /* ZEND_BUILTIN_FUNCTIONS_H */
 
index 40b29e55f388b1d1450b1dd9e976f70f24c15451..2e2ebaee96ca38efc5137c5951bd6405eafdc1ba 100644 (file)
@@ -41,7 +41,7 @@ static zend_object_value zend_default_exception_new(zend_class_entry *class_type
        ALLOC_ZVAL(trace);
        trace->is_ref = 0;
        trace->refcount = 0;
-       zend_fetch_debug_backtrace(trace TSRMLS_CC);
+       zend_fetch_debug_backtrace(trace, 0 TSRMLS_CC);
 
        zend_update_property_string(class_type, &obj, "file", sizeof("file")-1, zend_get_executed_filename(TSRMLS_C) TSRMLS_CC);
        zend_update_property_long(class_type, &obj, "line", sizeof("line")-1, zend_get_executed_lineno(TSRMLS_C) TSRMLS_CC);
index 40b29e55f388b1d1450b1dd9e976f70f24c15451..2e2ebaee96ca38efc5137c5951bd6405eafdc1ba 100644 (file)
@@ -41,7 +41,7 @@ static zend_object_value zend_default_exception_new(zend_class_entry *class_type
        ALLOC_ZVAL(trace);
        trace->is_ref = 0;
        trace->refcount = 0;
-       zend_fetch_debug_backtrace(trace TSRMLS_CC);
+       zend_fetch_debug_backtrace(trace, 0 TSRMLS_CC);
 
        zend_update_property_string(class_type, &obj, "file", sizeof("file")-1, zend_get_executed_filename(TSRMLS_C) TSRMLS_CC);
        zend_update_property_long(class_type, &obj, "line", sizeof("line")-1, zend_get_executed_lineno(TSRMLS_C) TSRMLS_CC);