summaryrefslogtreecommitdiffhomepage
path: root/src/hash.c
diff options
context:
space:
mode:
authorChristopher Aue <[email protected]>2017-08-05 20:42:11 +0200
committerChristopher Aue <[email protected]>2017-08-05 20:59:26 +0200
commitec7475d88b710a70c5465d6144a9cf2113a20984 (patch)
tree05f75c1d26800db72f32df4e524231a90dd7797f /src/hash.c
parent0e5c3c4ebdd0b5f79b90eaeb099c9689c22895b5 (diff)
downloadmruby-ec7475d88b710a70c5465d6144a9cf2113a20984.tar.gz
mruby-ec7475d88b710a70c5465d6144a9cf2113a20984.zip
Prevented resizing just created hashes in specific size ranges
Diffstat (limited to 'src/hash.c')
-rw-r--r--src/hash.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/hash.c b/src/hash.c
index 58b6b2f53..f7e84463d 100644
--- a/src/hash.c
+++ b/src/hash.c
@@ -145,7 +145,8 @@ mrb_hash_new_capa(mrb_state *mrb, mrb_int capa)
struct RHash *h;
h = (struct RHash*)mrb_obj_alloc(mrb, MRB_TT_HASH, mrb->hash_class);
- h->ht = kh_init_size(ht, mrb, capa);
+ /* khash needs 1/4 empty space so it is not resized immediately */
+ h->ht = kh_init_size(ht, mrb, capa*4/3);
h->iv = 0;
return mrb_obj_value(h);
}