summaryrefslogtreecommitdiff
path: root/vm_eval.c
diff options
context:
space:
mode:
authorJeremy Evans <code@jeremyevans.net>2019-09-14 13:57:39 -0700
committerJeremy Evans <code@jeremyevans.net>2019-09-14 13:57:39 -0700
commit1edcfd610703fb6f773e8f31f88f8ca920bda1ac (patch)
tree3dcfc1f512cf88cc401a0a5efc8be347f0b35586 /vm_eval.c
parent395e5f510cb3788dd2b57f1f9fa9be8980564af8 (diff)
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.c6
1 files changed, 6 insertions, 0 deletions
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;
}