summaryrefslogtreecommitdiffhomepage
path: root/src/vm.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2018-11-05 07:44:25 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2018-11-05 07:44:25 +0900
commitd47003aea406e1e48ef79efd61b17d5121c4c6b9 (patch)
tree18b6767371f8ffc0aadc1847e7f9dbe9c87aebd9 /src/vm.c
parentd9e253255218b04fd54a55980c4d8b6d61b1697c (diff)
downloadmruby-d47003aea406e1e48ef79efd61b17d5121c4c6b9.tar.gz
mruby-d47003aea406e1e48ef79efd61b17d5121c4c6b9.zip
Fixed a bug in argument number check with kwargs; fix #4159
Diffstat (limited to 'src/vm.c')
-rw-r--r--src/vm.c11
1 files changed, 4 insertions, 7 deletions
diff --git a/src/vm.c b/src/vm.c
index 9844d3e60..19288245c 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -1780,11 +1780,9 @@ RETRY_TRY_BLOCK:
/* strict argument check */
if (mrb->c->ci->proc && MRB_PROC_STRICT_P(mrb->c->ci->proc)) {
- if (argc >= 0 && !(argc <= 1 && kd)) {
- if (argc < m1 + m2 + kd || (r == 0 && argc > len + kd)) {
- argnum_error(mrb, m1+m2);
- goto L_RAISE;
- }
+ if (argc < m1 + m2 || (r == 0 && argc > len + kd)) {
+ argnum_error(mrb, m1+m2);
+ goto L_RAISE;
}
}
/* extract first argument array to arguments */
@@ -1810,8 +1808,7 @@ RETRY_TRY_BLOCK:
kargs = 0;
}
else {
- mrb_value str = mrb_str_new_lit(mrb, "Excepcted `Hash` as last argument for keyword arguments");
- mrb_exc_set(mrb, mrb_exc_new_str(mrb, E_ARGUMENT_ERROR, str));
+ argnum_error(mrb, m1+m2);
goto L_RAISE;
}
if (MRB_ASPEC_KEY(a) > 0) {