diff --git a/gc.c b/gc.c index 8900279d99..b95094b385 100644 --- a/gc.c +++ b/gc.c @@ -10493,13 +10493,15 @@ static const rb_data_type_t weakmap_type = { 0, 0, RUBY_TYPED_FREE_IMMEDIATELY }; +extern const struct st_hash_type rb_hashtype_ident; + static VALUE wmap_allocate(VALUE klass) { struct weakmap *w; VALUE obj = TypedData_Make_Struct(klass, struct weakmap, &weakmap_type, w); - w->obj2wmap = st_init_numtable(); - w->wmap2obj = st_init_numtable(); + w->obj2wmap = st_init_table(&rb_hashtype_ident); + w->wmap2obj = st_init_table(&rb_hashtype_ident); w->final = rb_obj_method(obj, ID2SYM(rb_intern("finalize"))); return obj; } diff --git a/hash.c b/hash.c index 9b5f978dd9..b73ade7c01 100644 --- a/hash.c +++ b/hash.c @@ -330,7 +330,8 @@ rb_ident_hash(st_data_t n) return (st_index_t)st_index_hash((st_index_t)n); } -static const struct st_hash_type identhash = { +#define identhash rb_hashtype_ident +const struct st_hash_type rb_hashtype_ident = { rb_ident_cmp, rb_ident_hash, };