diff options
-rw-r--r-- | gc.c | 6 | ||||
-rw-r--r-- | hash.c | 3 |
2 files changed, 6 insertions, 3 deletions
@@ -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; } @@ -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, }; |