From f1313caec1ec465836a20862f97b89e0865f9054 Mon Sep 17 00:00:00 2001 From: Jean byroot Boussier Date: Fri, 26 May 2023 15:40:29 +0200 Subject: [PATCH] [ruby/fiddle] Mark Closure, Function and Handle as write barrier protected (https://github.com/ruby/fiddle/pull/129) They don't have a mark function, so they don't need any change. https://github.com/ruby/fiddle/commit/9bbc732aef Co-authored-by: Jean Boussier --- ext/fiddle/closure.c | 11 +++++++---- ext/fiddle/function.c | 9 +++++++-- ext/fiddle/handle.c | 9 +++++++-- 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/ext/fiddle/closure.c b/ext/fiddle/closure.c index 892f522a62..3772dfda35 100644 --- a/ext/fiddle/closure.c +++ b/ext/fiddle/closure.c @@ -54,10 +54,13 @@ closure_memsize(const void * ptr) } const rb_data_type_t closure_data_type = { - "fiddle/closure", - {0, dealloc, closure_memsize,}, - 0, 0, - RUBY_TYPED_FREE_IMMEDIATELY, + .wrap_struct_name = "fiddle/closure", + .function = { + .dmark = 0, + .dfree = dealloc, + .dsize = closure_memsize + }, + .flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED, }; struct callback_args { diff --git a/ext/fiddle/function.c b/ext/fiddle/function.c index 274d181d17..5469e09e37 100644 --- a/ext/fiddle/function.c +++ b/ext/fiddle/function.c @@ -53,8 +53,13 @@ function_memsize(const void *p) } const rb_data_type_t function_data_type = { - "fiddle/function", - {0, deallocate, function_memsize,}, + .wrap_struct_name = "fiddle/function", + .function = { + .dmark = 0, + .dfree = deallocate, + .dsize = function_memsize + }, + .flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED, }; static VALUE diff --git a/ext/fiddle/handle.c b/ext/fiddle/handle.c index ae8cc3a581..8ba416952a 100644 --- a/ext/fiddle/handle.c +++ b/ext/fiddle/handle.c @@ -50,8 +50,13 @@ fiddle_handle_memsize(const void *ptr) } static const rb_data_type_t fiddle_handle_data_type = { - "fiddle/handle", - {0, fiddle_handle_free, fiddle_handle_memsize,}, + .wrap_struct_name = "fiddle/handle", + .function = { + .dmark = 0, + .dfree = fiddle_handle_free, + .dsize = fiddle_handle_memsize + }, + .flags = RUBY_TYPED_WB_PROTECTED, }; /*