diff options
author | Peter Zhu <peter@peterzhu.ca> | 2024-02-29 11:07:53 -0500 |
---|---|---|
committer | Peter Zhu <peter@peterzhu.ca> | 2024-02-29 11:07:53 -0500 |
commit | 4c0f0b90a4f4b33d1c1af7b7415c27ad105e6264 (patch) | |
tree | d4b6aa06b58c570ee29212ba7af29ed399a61814 /gc.c | |
parent | f8dd2342bf99738e2a8d7a4fa9e31bff186e0d5a (diff) |
Assume that FL_FINALIZE is in finalizer_table
If FL_FINALIZE is set but not in finalizer_table, then rb_bug.
Diffstat (limited to 'gc.c')
-rw-r--r-- | gc.c | 6 |
1 files changed, 5 insertions, 1 deletions
@@ -4043,11 +4043,15 @@ rb_gc_copy_finalizer(VALUE dest, VALUE obj) st_data_t data; 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; st_insert(finalizer_table, dest, table); 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 |