summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro Matsumoto <[email protected]>2012-05-30 16:12:32 +0900
committerYukihiro Matsumoto <[email protected]>2012-05-30 16:12:32 +0900
commita4a48e3da1e65cdf1e0aaad1f5b4a83d4f91e658 (patch)
tree6714d0d6b13719a149490db9cd7da14c5a2de32f
parent0de8ffb0deee9635383a2008b3a95590775ed893 (diff)
downloadmruby-a4a48e3da1e65cdf1e0aaad1f5b4a83d4f91e658.tar.gz
mruby-a4a48e3da1e65cdf1e0aaad1f5b4a83d4f91e658.zip
specify allocating array size for Hash#values
-rw-r--r--src/hash.c2
-rw-r--r--test/t/hash.rb1
2 files changed, 2 insertions, 1 deletions
diff --git a/src/hash.c b/src/hash.c
index 19d0507e3..777d5fc1a 100644
--- a/src/hash.c
+++ b/src/hash.c
@@ -1037,7 +1037,7 @@ mrb_hash_values(mrb_state *mrb, mrb_value hash)
{
khash_t(ht) *h = RHASH_TBL(hash);
khiter_t k;
- mrb_value ary = mrb_ary_new(mrb);
+ mrb_value ary = mrb_ary_new_capa(mrb, kh_size(h));
if (!h) return ary;
for (k = kh_begin(h); k != kh_end(h); k++) {
diff --git a/test/t/hash.rb b/test/t/hash.rb
index af662688a..240f6616b 100644
--- a/test/t/hash.rb
+++ b/test/t/hash.rb
@@ -222,5 +222,6 @@ end
assert('Hash#values', '15.2.13.4.28') do
a = { 'abc_key' => 'abc_value' }
+ p a.values
a.values == ['abc_value']
end