summaryrefslogtreecommitdiff
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
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.
-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;
}