cvs: ZendEngine2 / zend_builtin_functions.c zend_builtin_functions.h zend_exceptions.c
| From: | Sebastian Bergmann | Date: | Tue, 01 Nov 2005 13:18:34 +0000 |
| Subject: | cvs: ZendEngine2 / zend_builtin_functions.c zend_builtin_functions.h zend_exceptions.c | ||
| Groups: | php.zend-engine.cvs | ||
| Request: | Send a blank email to php-zend-engine-cvs+get-4312@lists.php.net to get a copy of this message | ||
sebastian Tue Nov 1 08:18:34 2005 EDT
Modified files:
/ZendEngine2 zend_builtin_functions.c zend_builtin_functions.h
zend_exceptions.c
Log:
Add an additional field $frame['object'] to the result array of debug_backtrace() that
contains a reference to the respective object when the frame was called from an object. This revised
patch has been reviewed by Dmitry and Zeev.
http://cvs.php.net/diff.php/ZendEngine2/zend_builtin_functions.c?r1=1.296&r2=1.297&ty=u
Index: ZendEngine2/zend_builtin_functions.c
diff -u ZendEngine2/zend_builtin_functions.c:1.296 ZendEngine2/zend_builtin_functions.c:1.297
--- ZendEngine2/zend_builtin_functions.c:1.296 Tue Nov 1 02:20:54 2005
+++ ZendEngine2/zend_builtin_functions.c Tue Nov 1 08:18:33 2005
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_builtin_functions.c,v 1.296 2005/11/01 07:20:54 sebastian Exp $ */
+/* $Id: zend_builtin_functions.c,v 1.297 2005/11/01 13:18:33 sebastian Exp $ */
#include "zend.h"
#include "zend_API.h"
@@ -1906,7 +1906,7 @@
/* }}} */
-ZEND_API void zend_fetch_debug_backtrace(zval *return_value, int skip_last TSRMLS_DC)
+ZEND_API void zend_fetch_debug_backtrace(zval *return_value, int skip_last, int provide_object
TSRMLS_DC)
{
zend_execute_data *ptr, *skip;
int lineno;
@@ -2005,6 +2005,11 @@
dup = zend_get_object_classname(ptr->object, &class_name, &class_name_len
TSRMLS_CC);
add_assoc_text_ex(stack_frame, "class", sizeof("class"), class_name, dup);
}
+ if (provide_object) {
+ add_assoc_zval_ex(stack_frame, "object", sizeof("object"),
ptr->object);
+ ptr->object->refcount++;
+ }
+
add_assoc_ascii_string_ex(stack_frame, "type", sizeof("type"),
"->", 1);
} else if (ptr->function_state.function->common.scope) {
add_assoc_textl_ex(stack_frame, "class", sizeof("class"),
ptr->function_state.function->common.scope->name,
ptr->function_state.function->common.scope->name_length, 1);
@@ -2086,7 +2091,7 @@
ZEND_WRONG_PARAM_COUNT();
}
- zend_fetch_debug_backtrace(return_value, 1 TSRMLS_CC);
+ zend_fetch_debug_backtrace(return_value, 1, 1 TSRMLS_CC);
}
/* }}} */
http://cvs.php.net/diff.php/ZendEngine2/zend_builtin_functions.h?r1=1.17&r2=1.18&ty=u
Index: ZendEngine2/zend_builtin_functions.h
diff -u ZendEngine2/zend_builtin_functions.h:1.17 ZendEngine2/zend_builtin_functions.h:1.18
--- ZendEngine2/zend_builtin_functions.h:1.17 Wed Aug 3 09:30:48 2005
+++ ZendEngine2/zend_builtin_functions.h Tue Nov 1 08:18:34 2005
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_builtin_functions.h,v 1.17 2005/08/03 13:30:48 sniper Exp $ */
+/* $Id: zend_builtin_functions.h,v 1.18 2005/11/01 13:18:34 sebastian Exp $ */
#ifndef ZEND_BUILTIN_FUNCTIONS_H
#define ZEND_BUILTIN_FUNCTIONS_H
@@ -25,7 +25,7 @@
int zend_startup_builtin_functions(TSRMLS_D);
BEGIN_EXTERN_C()
-ZEND_API void zend_fetch_debug_backtrace(zval *return_value, int skip_last TSRMLS_DC);
+ZEND_API void zend_fetch_debug_backtrace(zval *return_value, int skip_last, int provide_object
TSRMLS_DC);
END_EXTERN_C()
#endif /* ZEND_BUILTIN_FUNCTIONS_H */
http://cvs.php.net/diff.php/ZendEngine2/zend_exceptions.c?r1=1.89&r2=1.90&ty=u
Index: ZendEngine2/zend_exceptions.c
diff -u ZendEngine2/zend_exceptions.c:1.89 ZendEngine2/zend_exceptions.c:1.90
--- ZendEngine2/zend_exceptions.c:1.89 Tue Aug 23 08:53:21 2005
+++ ZendEngine2/zend_exceptions.c Tue Nov 1 08:18:34 2005
@@ -19,7 +19,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_exceptions.c,v 1.89 2005/08/23 12:53:21 dmitry Exp $ */
+/* $Id: zend_exceptions.c,v 1.90 2005/11/01 13:18:34 sebastian Exp $ */
#include "zend.h"
#include "zend_API.h"
@@ -92,7 +92,7 @@
ALLOC_ZVAL(trace);
trace->is_ref = 0;
trace->refcount = 0;
- zend_fetch_debug_backtrace(trace, skip_top_traces TSRMLS_CC);
+ zend_fetch_debug_backtrace(trace, skip_top_traces, 0 TSRMLS_CC);
zend_update_property_rt_string(U_CLASS_ENTRY(default_exception_ce), &obj, "file",
sizeof("file")-1, zend_get_executed_filename(TSRMLS_C) TSRMLS_CC);
zend_update_property_long(U_CLASS_ENTRY(default_exception_ce), &obj, "line",
sizeof("line")-1, zend_get_executed_lineno(TSRMLS_C) TSRMLS_CC);