diff options
author | Jeremy Evans <code@jeremyevans.net> | 2019-09-18 15:30:59 -0700 |
---|---|---|
committer | Jeremy Evans <code@jeremyevans.net> | 2019-09-20 07:45:29 -0700 |
commit | e47b111627d5c68b8900f57364fecd51cbcd0268 (patch) | |
tree | 1545d60a310c6e9fdabb5eb91c947b3c5a242b0b /vm_method.c | |
parent | c9f2b790adcff8df48e3192d18ee8afa02f5530c (diff) |
Call rb_vm_call_kw insted of rb_vm_call0 in a few cases
rb_vm_call_kw handles the tmp buffer for you.
Also, change method_missing so it also calls rb_vm_call_kw to
handle the kw_splat flag, instead of requiring callers to handle
kw_splat flag before calling method_missing. This may fix other
cases where method_missing is currently called without the kw_splat
being handled.
Diffstat (limited to 'vm_method.c')
-rw-r--r-- | vm_method.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/vm_method.c b/vm_method.c index 63dc73f94b..a3d56c8baf 100644 --- a/vm_method.c +++ b/vm_method.c @@ -1921,9 +1921,7 @@ call_method_entry(rb_execution_context_t *ec, VALUE defined_class, VALUE obj, ID const rb_callable_method_entry_t *cme = prepare_callable_method_entry(defined_class, id, me); VALUE passed_block_handler = vm_passed_block_handler(ec); - VALUE v = rb_adjust_argv_kw_splat(&argc, &argv, &kw_splat); - VALUE result = rb_vm_call0(ec, obj, id, argc, argv, cme, kw_splat); - rb_free_tmp_buffer(&v); + VALUE result = rb_vm_call_kw(ec, obj, id, argc, argv, cme, kw_splat); vm_passed_block_handler_set(ec, passed_block_handler); return result; } |