diff options
| author | Peter Zhu <peter@peterzhu.ca> | 2024-07-18 13:36:23 -0400 |
|---|---|---|
| committer | Peter Zhu <peter@peterzhu.ca> | 2024-07-19 08:53:32 -0400 |
| commit | e8aa9daa5bcb1993f2cddbf191cc46a7ad6bebed (patch) | |
| tree | d9fdb5429412e8a92958ee2a65e5a7ced94c939a | |
| parent | 0936e3d545c99dfec35ea32c8b0206cf54028f27 (diff) | |
Move return value of rb_define_finalizer out
Moves return value logic of rb_define_finalizer out from
rb_gc_impl_define_finalizer.
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/11199
| -rw-r--r-- | gc.c | 7 | ||||
| -rw-r--r-- | gc/default.c | 7 |
2 files changed, 8 insertions, 6 deletions
@@ -1560,7 +1560,12 @@ rb_define_finalizer(VALUE obj, VALUE block) { should_be_finalizable(obj); should_be_callable(block); - return rb_gc_impl_define_finalizer(rb_gc_get_objspace(), obj, block); + + block = rb_gc_impl_define_finalizer(rb_gc_get_objspace(), obj, block); + + block = rb_ary_new3(2, INT2FIX(0), block); + OBJ_FREEZE(block); + return block; } void diff --git a/gc/default.c b/gc/default.c index cdc7961699..597044b5f6 100644 --- a/gc/default.c +++ b/gc/default.c @@ -2983,8 +2983,7 @@ rb_gc_impl_define_finalizer(void *objspace_ptr, VALUE obj, VALUE block) for (i = 0; i < len; i++) { VALUE recv = RARRAY_AREF(table, i); if (rb_equal(recv, block)) { - block = recv; - goto end; + return recv; } } } @@ -2996,9 +2995,7 @@ rb_gc_impl_define_finalizer(void *objspace_ptr, VALUE obj, VALUE block) rb_obj_hide(table); st_add_direct(finalizer_table, obj, table); } - end: - block = rb_ary_new3(2, INT2FIX(0), block); - OBJ_FREEZE(block); + return block; } |
