summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--box.c6
-rw-r--r--class.c5
2 files changed, 5 insertions, 6 deletions
diff --git a/box.c b/box.c
index 9c85426b8c..b55e8bb137 100644
--- a/box.c
+++ b/box.c
@@ -234,7 +234,7 @@ rb_box_entry_mark(void *ptr)
rb_gc_mark(box->ruby_dln_libmap);
rb_gc_mark(box->gvar_tbl);
if (box->classext_cow_classes) {
- rb_mark_tbl(box->classext_cow_classes);
+ rb_mark_set(box->classext_cow_classes);
}
}
@@ -271,10 +271,10 @@ free_box_st_tables(void *ptr)
}
static int
-free_classext_for_box(st_data_t _key, st_data_t obj_value, st_data_t box_arg)
+free_classext_for_box(st_data_t key, st_data_t _value, st_data_t box_arg)
{
rb_classext_t *ext;
- VALUE obj = (VALUE)obj_value;
+ VALUE obj = (VALUE)key;
const rb_box_t *box = (const rb_box_t *)box_arg;
if (RB_TYPE_P(obj, T_CLASS) || RB_TYPE_P(obj, T_MODULE)) {
diff --git a/class.c b/class.c
index 91bea44cd9..11cdd9a81d 100644
--- a/class.c
+++ b/class.c
@@ -89,8 +89,7 @@ rb_class_unlink_classext(VALUE klass, const rb_box_t *box)
{
st_data_t ext;
st_data_t key = (st_data_t)box->box_object;
- VALUE obj_id = rb_obj_id(klass);
- st_delete(box->classext_cow_classes, &obj_id, 0);
+ st_delete(box->classext_cow_classes, &klass, 0);
st_delete(RCLASS_CLASSEXT_TBL(klass), &key, &ext);
return (rb_classext_t *)ext;
}
@@ -203,7 +202,7 @@ rb_class_set_box_classext(VALUE obj, const rb_box_t *box, rb_classext_t *ext)
// (e.g. st_insert below) that could trigger GC.
rb_gc_writebarrier_remember(obj);
- st_insert(box->classext_cow_classes, (st_data_t)rb_obj_id(obj), obj);
+ st_insert(box->classext_cow_classes, (st_data_t)obj, 0);
}
RUBY_EXTERN rb_serial_t ruby_vm_global_cvar_state;