зеркало из https://github.com/github/ruby.git
Move return value of rb_define_finalizer out
Moves return value logic of rb_define_finalizer out from rb_gc_impl_define_finalizer.
This commit is contained in:
Родитель
0936e3d545
Коммит
e8aa9daa5b
7
gc.c
7
gc.c
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче