From: Dmitry Stogov Date: Tue, 22 Jul 2014 07:12:49 +0000 (+0400) Subject: Fixed dtrace support X-Git-Tag: POST_PHPNG_MERGE~47^2~10 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ea17b018d834038f2e65b1716c0cbc02a27a7838;p=php Fixed dtrace support --- diff --git a/Zend/zend_dtrace.c b/Zend/zend_dtrace.c index 2c1deadec0..285f6c044e 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 90487bf762..754927b577 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); }