summaryrefslogtreecommitdiff
path: root/vm_method.c
diff options
context:
space:
mode:
authorJeremy Evans <code@jeremyevans.net>2019-09-18 15:30:59 -0700
committerJeremy Evans <code@jeremyevans.net>2019-09-20 07:45:29 -0700
commite47b111627d5c68b8900f57364fecd51cbcd0268 (patch)
tree1545d60a310c6e9fdabb5eb91c947b3c5a242b0b /vm_method.c
parentc9f2b790adcff8df48e3192d18ee8afa02f5530c (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.c4
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;
}