summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/hash.c1
-rw-r--r--src/vm.c3
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++) {
diff --git a/src/vm.c b/src/vm.c
index 49c2bb85c..7904162be 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -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;
}