- lib_ring_buffer_align_ctx(&__ctx, lttng_alignof(*(_src))); \
- __chan->ops->event_write(&__ctx, _src, __get_dynamic_len(dest));
+ { \
+ const char *__ctf_tmp_string = \
+ ((_src) ? (_src) : __LTTNG_UST_NULL_STRING); \
+ lib_ring_buffer_align_ctx(&__ctx, \
+ lttng_alignof(*__ctf_tmp_string)); \
+ if (__chan->ops->u.has_strcpy) \
+ __chan->ops->event_strcpy(&__ctx, __ctf_tmp_string, \
+ __get_dynamic_len(dest)); \
+ else \
+ __chan->ops->event_write(&__ctx, __ctf_tmp_string, \
+ __get_dynamic_len(dest)); \
+ }
+
+
+#undef _ctf_enum
+#define _ctf_enum(_provider, _name, _type, _item, _src, _nowrite) \
+ _ctf_integer_ext(_type, _item, _src, BYTE_ORDER, 10, _nowrite)