diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/hash.c | 1 | ||||
| -rw-r--r-- | src/vm.c | 3 |
2 files changed, 3 insertions, 1 deletions
diff --git a/src/hash.c b/src/hash.c index 6b92344c3..fd963c3de 100644 --- a/src/hash.c +++ b/src/hash.c @@ -536,6 +536,7 @@ ht_copy(mrb_state *mrb, htable *t) seg = t->rootseg; t2 = ht_new(mrb); + if (t->size == 0) return t2; while (seg) { for (i=0; i<seg->size; i++) { @@ -1810,7 +1810,8 @@ RETRY_TRY_BLOCK: kdict = argv[argc-1]; mrb_hash_check_kdict(mrb, kdict); } - else if (r || argc <= m1+m2+o) { + else if (r || argc <= m1+m2+o + || !(mrb->c->ci->proc && MRB_PROC_STRICT_P(mrb->c->ci->proc))) { kdict = mrb_hash_new(mrb); kargs = 0; } |
