Skip to content

Commit 598c2da

Browse files
author
John Salem
authored
Prevent Segfault in EventPipe on disable (#56104)
1 parent 866808d commit 598c2da

File tree

2 files changed

+9
-4
lines changed

2 files changed

+9
-4
lines changed

src/native/eventpipe/ep-types.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ struct _EventPipeProviderCallbackData {
6363
#else
6464
struct _EventPipeProviderCallbackData_Internal {
6565
#endif
66-
const ep_char8_t *filter_data;
66+
ep_char8_t *filter_data;
6767
EventPipeCallback callback_function;
6868
void *callback_data;
6969
int64_t keywords;

src/native/eventpipe/ep.c

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -246,8 +246,10 @@ ep_provider_callback_data_alloc_copy (EventPipeProviderCallbackData *provider_ca
246246
EventPipeProviderCallbackData *instance = ep_rt_object_alloc (EventPipeProviderCallbackData);
247247
ep_raise_error_if_nok (instance != NULL);
248248

249-
if (provider_callback_data_src)
249+
if (provider_callback_data_src) {
250250
*instance = *provider_callback_data_src;
251+
instance->filter_data = ep_rt_utf8_string_dup (provider_callback_data_src->filter_data);
252+
}
251253

252254
ep_on_exit:
253255
return instance;
@@ -270,7 +272,7 @@ ep_provider_callback_data_init (
270272
{
271273
EP_ASSERT (provider_callback_data != NULL);
272274

273-
provider_callback_data->filter_data = filter_data;
275+
provider_callback_data->filter_data = ep_rt_utf8_string_dup (filter_data);
274276
provider_callback_data->callback_function = callback_function;
275277
provider_callback_data->callback_data = callback_data;
276278
provider_callback_data->keywords = keywords;
@@ -289,19 +291,22 @@ ep_provider_callback_data_init_copy (
289291
EP_ASSERT (provider_callback_data_src != NULL);
290292

291293
*provider_callback_data_dst = *provider_callback_data_src;
294+
provider_callback_data_dst->filter_data = ep_rt_utf8_string_dup (provider_callback_data_src->filter_data);
292295
return provider_callback_data_dst;
293296
}
294297

295298
void
296299
ep_provider_callback_data_fini (EventPipeProviderCallbackData *provider_callback_data)
297300
{
298-
;
301+
ep_return_void_if_nok (provider_callback_data != NULL);
302+
ep_rt_utf8_string_free (provider_callback_data->filter_data);
299303
}
300304

301305
void
302306
ep_provider_callback_data_free (EventPipeProviderCallbackData *provider_callback_data)
303307
{
304308
ep_return_void_if_nok (provider_callback_data != NULL);
309+
ep_provider_callback_data_fini (provider_callback_data);
305310
ep_rt_object_free (provider_callback_data);
306311
}
307312

0 commit comments

Comments
 (0)