diff options
author | Peter Zhu <[email protected]> | 2023-11-22 10:49:28 -0500 |
---|---|---|
committer | Peter Zhu <[email protected]> | 2023-11-27 08:29:35 -0500 |
commit | 2dadd17c780108d9f98989578149a091ff2c0f50 (patch) | |
tree | 85bae303fdc480fa598eb1bd14c8eee6de3e5756 /enumerator.c | |
parent | d7165d88ec715f4c73b6fcbbbd6b185145359757 (diff) |
Implement Write Barriers on Enumerator::Generator
Diffstat (limited to 'enumerator.c')
-rw-r--r-- | enumerator.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/enumerator.c b/enumerator.c index 602735119b..8e86176c90 100644 --- a/enumerator.c +++ b/enumerator.c @@ -1434,7 +1434,7 @@ static const rb_data_type_t generator_data_type = { NULL, generator_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 generator * @@ -1474,7 +1474,7 @@ generator_init(VALUE obj, VALUE proc) rb_raise(rb_eArgError, "unallocated generator"); } - ptr->proc = proc; + RB_OBJ_WRITE(obj, &ptr->proc, proc); return obj; } @@ -1522,7 +1522,7 @@ generator_init_copy(VALUE obj, VALUE orig) rb_raise(rb_eArgError, "unallocated generator"); } - ptr1->proc = ptr0->proc; + RB_OBJ_WRITE(obj, &ptr1->proc, ptr0->proc); return obj; } @@ -1689,7 +1689,7 @@ lazy_generator_init(VALUE enumerator, VALUE procs) lazy_init_block, rb_ary_new3(2, obj, procs)); gen_ptr = generator_ptr(generator); - gen_ptr->obj = obj; + RB_OBJ_WRITE(generator, &gen_ptr->obj, obj); return generator; } |