Assume that FL_FINALIZE is in finalizer_table
If FL_FINALIZE is set but not in finalizer_table, then rb_bug.
This commit is contained in:
parent
f8dd2342bf
commit
4c0f0b90a4
6
gc.c
6
gc.c
@ -4043,11 +4043,15 @@ rb_gc_copy_finalizer(VALUE dest, VALUE obj)
|
|||||||
st_data_t data;
|
st_data_t data;
|
||||||
|
|
||||||
if (!FL_TEST(obj, FL_FINALIZE)) return;
|
if (!FL_TEST(obj, FL_FINALIZE)) return;
|
||||||
if (st_lookup(finalizer_table, obj, &data)) {
|
|
||||||
|
if (RB_LIKELY(st_lookup(finalizer_table, obj, &data))) {
|
||||||
table = (VALUE)data;
|
table = (VALUE)data;
|
||||||
st_insert(finalizer_table, dest, table);
|
st_insert(finalizer_table, dest, table);
|
||||||
FL_SET(dest, FL_FINALIZE);
|
FL_SET(dest, FL_FINALIZE);
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
rb_bug("rb_gc_copy_finalizer: FL_FINALIZE set but not found in finalizer_table: %s", obj_info(obj));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
|
Loading…
x
Reference in New Issue
Block a user