Skip to content

Commit f2c0f05

Browse files
committed
Move DTrace error handling into notification callback.
1 parent 958c216 commit f2c0f05

File tree

3 files changed

+14
-9
lines changed

3 files changed

+14
-9
lines changed

Zend/zend.c

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -847,6 +847,8 @@ int zend_startup(zend_utility_functions *utility_functions) /* {{{ */
847847
zend_compile_file = dtrace_compile_file;
848848
zend_execute_ex = dtrace_execute_ex;
849849
zend_execute_internal = dtrace_execute_internal;
850+
851+
zend_register_error_notify_callback("dtrace", dtrace_error_notify_cb);
850852
} else {
851853
zend_compile_file = compile_file;
852854
zend_execute_ex = execute_ex;
@@ -1314,15 +1316,6 @@ static ZEND_COLD void zend_error_va_list(
13141316
}
13151317
}
13161318

1317-
#ifdef HAVE_DTRACE
1318-
if (DTRACE_ERROR_ENABLED()) {
1319-
char *dtrace_error_buffer;
1320-
zend_vspprintf(&dtrace_error_buffer, 0, format, args);
1321-
DTRACE_ERROR(dtrace_error_buffer, (char *)error_filename, error_lineno);
1322-
efree(dtrace_error_buffer);
1323-
}
1324-
#endif /* HAVE_DTRACE */
1325-
13261319
zend_error_notify_all_callbacks(type, error_filename, error_lineno, format, args);
13271320

13281321
/* if we don't have a user defined error handler */

Zend/zend_dtrace.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,16 @@ ZEND_API void dtrace_execute_internal(zend_execute_data *execute_data, zval *ret
109109
}
110110
}
111111

112+
void dtrace_error_notify_cb(int type, const char *error_filename, const uint32_t error_lineno, const char *format, va_list args)
113+
{
114+
if (DTRACE_ERROR_ENABLED()) {
115+
char *dtrace_error_buffer;
116+
zend_vspprintf(&dtrace_error_buffer, 0, format, args);
117+
DTRACE_ERROR(dtrace_error_buffer, (char *)error_filename, error_lineno);
118+
efree(dtrace_error_buffer);
119+
}
120+
}
121+
112122
/* }}} */
113123

114124
#endif /* HAVE_DTRACE */

Zend/zend_dtrace.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ ZEND_API void dtrace_execute_ex(zend_execute_data *execute_data);
3737
ZEND_API void dtrace_execute_internal(zend_execute_data *execute_data, zval *return_value);
3838
#include <zend_dtrace_gen.h>
3939

40+
void dtrace_error_notify_cb(int type, const char *error_filename, const uint32_t error_lineno, const char *format, va_list args);
41+
4042
#endif /* HAVE_DTRACE */
4143

4244
#ifdef __cplusplus

0 commit comments

Comments
 (0)