Index: Zend/zend_exceptions.c =================================================================== RCS file: /repository/ZendEngine2/zend_exceptions.c,v retrieving revision 1.76 diff -u -p -d -r1.76 zend_exceptions.c --- Zend/zend_exceptions.c 19 Apr 2005 11:41:03 -0000 1.76 +++ Zend/zend_exceptions.c 21 Jun 2005 20:25:11 -0000 @@ -264,6 +264,26 @@ ZEND_METHOD(error_exception, getSeverity } /* }}} */ +/* {{{ proto int ErrorException::fillInTrace() + Fill in exceptions stack trace */ +ZEND_METHOD(exception, fillInTrace) +{ + zval *object = getThis(); + zval *trace; + + DEFAULT_0_PARAMS; + + trace = zend_read_property(default_exception_ce, object, "trace", sizeof("trace")-1, 0 TSRMLS_CC); + zval_dtor(trace); + + zend_fetch_debug_backtrace(trace, 0 TSRMLS_CC); + zend_update_property(default_exception_ce, object, "trace", sizeof("trace")-1, trace TSRMLS_CC); + + *return_value = *object; + zval_copy_ctor(return_value); +} +/* }}} */ + /* {{{ ZEND_METHOD(exception, gettraceasstring) */ #define TRACE_APPEND_CHR(chr) \ *str = (char*)erealloc(*str, *len + 1 + 1); \ @@ -537,6 +557,7 @@ static zend_function_entry default_excep ZEND_ME(exception, getTrace, NULL, ZEND_ACC_PUBLIC|ZEND_ACC_FINAL) ZEND_ME(exception, getTraceAsString, NULL, ZEND_ACC_PUBLIC|ZEND_ACC_FINAL) ZEND_ME(exception, __toString, NULL, 0) + ZEND_ME(exception, fillInTrace, NULL, ZEND_ACC_PUBLIC|ZEND_ACC_FINAL) {NULL, NULL, NULL} };