aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Zhu <peter@peterzhu.ca>2023-11-22 10:54:32 -0500
committerPeter Zhu <peter@peterzhu.ca>2023-11-27 08:29:35 -0500
commit2e4a0a4d90205224703a958fc9e4de61f6436aae (patch)
tree101696b93f936f677c265cea6c2306dc8f793061
parent2dadd17c780108d9f98989578149a091ff2c0f50 (diff)
downloadruby-2e4a0a4d90205224703a958fc9e4de61f6436aae.tar.gz
Implement Write Barriers on Enumerator::Producer
-rw-r--r--enumerator.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/enumerator.c b/enumerator.c
index 8e86176c90..a90a594397 100644
--- a/enumerator.c
+++ b/enumerator.c
@@ -2945,7 +2945,7 @@ static const rb_data_type_t producer_data_type = {
producer_memsize,
producer_compact,
},
- 0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_EMBEDDABLE
+ 0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE
};
static struct producer *
@@ -2985,8 +2985,8 @@ producer_init(VALUE obj, VALUE init, VALUE proc)
rb_raise(rb_eArgError, "unallocated producer");
}
- ptr->init = init;
- ptr->proc = proc;
+ RB_OBJ_WRITE(obj, &ptr->init, init);
+ RB_OBJ_WRITE(obj, &ptr->proc, proc);
return obj;
}