]> granicus.if.org Git - php/commitdiff
Fixed dtrace support
authorDmitry Stogov <dmitry@zend.com>
Tue, 22 Jul 2014 07:12:49 +0000 (11:12 +0400)
committerDmitry Stogov <dmitry@zend.com>
Tue, 22 Jul 2014 07:12:49 +0000 (11:12 +0400)
Zend/zend_dtrace.c
Zend/zend_exceptions.c

index 2c1deadec0f615d944018829b4408a927d25afcc..285f6c044e159ee481c3ffcf5cb3344573e2f5d3 100644 (file)
 /* 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);
        }
index 90487bf762afc29781aa7b968b1a527dde88f320..754927b577405b023b0f1ae4716865af2d545314 100644 (file)
@@ -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);
                }