From 1edcfd610703fb6f773e8f31f88f8ca920bda1ac Mon Sep 17 00:00:00 2001 From: Jeremy Evans Date: Sat, 14 Sep 2019 13:57:39 -0700 Subject: [PATCH] Issue a warning if invalid kw_splat is passed to *_kw function This should only happen if the API is misused. It's much better to warn here and fix the problem, versus to try to debug TypeErrors or segfaults later. --- vm_eval.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/vm_eval.c b/vm_eval.c index b5d6dcca13..c896a44f79 100644 --- a/vm_eval.c +++ b/vm_eval.c @@ -255,6 +255,12 @@ add_empty_keyword(int *argc, const VALUE **argv, int *kw_splat) *kw_splat = rb_keyword_given_p(); } } + + if (*kw_splat && *argc > 0 && !RB_TYPE_P((*argv)[(*argc)-1], T_HASH)) { + rb_warn("Keyword flag passed calling internal method, but last entry is not a hash, unsetting keyword flag"); + *kw_splat = 0; + } + return 0; }