diff options
Diffstat (limited to 'vm_insnhelper.c')
-rw-r--r-- | vm_insnhelper.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/vm_insnhelper.c b/vm_insnhelper.c index d0f73ecf42..ea56ea4011 100644 --- a/vm_insnhelper.c +++ b/vm_insnhelper.c @@ -2739,9 +2739,11 @@ vm_caller_setup_keyword_hash(const struct rb_callinfo *ci, VALUE keyword_hash) keyword_hash = rb_hash_dup(rb_to_hash_type(keyword_hash)); } } - else if (!IS_ARGS_KW_SPLAT_MUT(ci)) { + else if (!IS_ARGS_KW_SPLAT_MUT(ci) && !RHASH_EMPTY_P(keyword_hash)) { /* Convert a hash keyword splat to a new hash unless * a mutable keyword splat was passed. + * Skip allocating new hash for empty keyword splat, as empty + * keyword splat will be ignored by both callers. */ keyword_hash = rb_hash_dup(keyword_hash); } |