diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2018-11-05 07:44:25 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2018-11-05 07:44:25 +0900 |
| commit | d47003aea406e1e48ef79efd61b17d5121c4c6b9 (patch) | |
| tree | 18b6767371f8ffc0aadc1847e7f9dbe9c87aebd9 /src/vm.c | |
| parent | d9e253255218b04fd54a55980c4d8b6d61b1697c (diff) | |
| download | mruby-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.c | 11 |
1 files changed, 4 insertions, 7 deletions
@@ -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) { |
