aboutsummaryrefslogtreecommitdiffstats
path: root/vm_insnhelper.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-08-05 06:58:44 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-08-05 06:58:44 +0000
commit5ac8f2a3d7667e5136b0d79486a7ea62f97d72b4 (patch)
treee86f7f48de3660eb536cd32a39a8f58db1425568 /vm_insnhelper.c
parent96b9fe56aa0d2d2e04f926cd2d33482c26493a7a (diff)
downloadruby-5ac8f2a3d7667e5136b0d79486a7ea62f97d72b4.tar.gz
splat keyword hash
* compile.c (compile_array_keyword_arg): set keyword splat flag if explicitly splatted. [ruby-core:68124] [Bug #10856] * vm_args.c (setup_parameters_complex): try keyword hash splat if given. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59519 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'vm_insnhelper.c')
-rw-r--r--vm_insnhelper.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/vm_insnhelper.c b/vm_insnhelper.c
index d835997f7c..c2cc34c4f1 100644
--- a/vm_insnhelper.c
+++ b/vm_insnhelper.c
@@ -1585,7 +1585,7 @@ static inline int
vm_callee_setup_arg(rb_thread_t *th, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc,
const rb_iseq_t *iseq, VALUE *argv, int param_size, int local_size)
{
- if (LIKELY(simple_iseq_p(iseq))) {
+ if (LIKELY(simple_iseq_p(iseq) && !(ci->flag & VM_CALL_KW_SPLAT))) {
rb_control_frame_t *cfp = th->ec.cfp;
CALLER_SETUP_ARG(cfp, calling, ci); /* splat arg */