com php-src: Fixed dtrace support: Zend/zend_dtrace.c Zen d/zend_exceptions.c
| From: | Dmitry Stogov | Date: | Tue, 22 Jul 2014 07:12:49 +0000 |
| Subject: | com php-src: Fixed dtrace support: Zend/zend_dtrace.c Zen d/zend_exceptions.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-79548@lists.php.net to get a copy of this message | ||
Commit: ea17b018d834038f2e65b1716c0cbc02a27a7838
Author: Dmitry Stogov <dmitry@zend.com> Tue, 22 Jul 2014 11:12:49 +0400
Parents: 6cc487df2c464224e28c3869599e0c110df03897
Branches: phpng
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=ea17b018d834038f2e65b1716c0cbc02a27a7838
Log:
Fixed dtrace support
Changed paths:
M Zend/zend_dtrace.c
M Zend/zend_exceptions.c
Diff:
diff --git a/Zend/zend_dtrace.c b/Zend/zend_dtrace.c
index 2c1dead..285f6c0 100644
--- a/Zend/zend_dtrace.c
+++ b/Zend/zend_dtrace.c
@@ -26,8 +26,13 @@
/* PHP DTrace probes {{{ */
static inline const char *dtrace_get_executed_filename(TSRMLS_D)
{
- if (EG(current_execute_data) && EG(current_execute_data)->op_array) {
- return EG(current_execute_data)->op_array->filename;
+ zend_execute_data *ex = EG(current_execute_data);
+
+ while (ex && (!ex->func || !ZEND_USER_CODE(ex->func->type))) {
+ ex = ex->prev_execute_data;
+ }
+ if (ex) {
+ return ex->func->op_array.filename->val;
} else {
return zend_get_executed_filename(TSRMLS_C);
}
diff --git a/Zend/zend_exceptions.c b/Zend/zend_exceptions.c
index 90487bf..754927b 100644
--- a/Zend/zend_exceptions.c
+++ b/Zend/zend_exceptions.c
@@ -88,12 +88,11 @@ void zend_throw_exception_internal(zval *exception TSRMLS_DC) /* {{{ */
{
#ifdef HAVE_DTRACE
if (DTRACE_EXCEPTION_THROWN_ENABLED()) {
- const char *classname;
- zend_uint name_len;
+ zend_string *classname;
if (exception != NULL) {
- zend_get_object_classname(Z_OBJ_P(exception), &classname, &name_len TSRMLS_CC);
- DTRACE_EXCEPTION_THROWN((char *)classname);
+ classname = zend_get_object_classname(Z_OBJ_P(exception) TSRMLS_CC);
+ DTRACE_EXCEPTION_THROWN(classname->val);
} else {
DTRACE_EXCEPTION_THROWN(NULL);
}