diff options
author | Jeremy Evans <code@jeremyevans.net> | 2019-09-14 13:57:39 -0700 |
---|---|---|
committer | Jeremy Evans <code@jeremyevans.net> | 2019-09-14 13:57:39 -0700 |
commit | 1edcfd610703fb6f773e8f31f88f8ca920bda1ac (patch) | |
tree | 3dcfc1f512cf88cc401a0a5efc8be347f0b35586 /vm_eval.c | |
parent | 395e5f510cb3788dd2b57f1f9fa9be8980564af8 (diff) | |
download | bundler-1edcfd610703fb6f773e8f31f88f8ca920bda1ac.tar.gz |
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.
Diffstat (limited to 'vm_eval.c')
-rw-r--r-- | vm_eval.c | 6 |
1 files changed, 6 insertions, 0 deletions
@@ -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; } |