summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gc.c6
-rw-r--r--hash.c3
2 files changed, 6 insertions, 3 deletions
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,
};