summaryrefslogtreecommitdiffhomepage
path: root/src/class.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2020-09-01 22:30:57 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2020-10-12 18:20:10 +0900
commit87c7064bad4fb9403ebf4b72be33f2dc51fa46db (patch)
tree83ac769e553a9270ec3983336dfadf2cd2b3eaab /src/class.c
parent4cf1da9542d6554ec23de6324c5f2d5eebe138c9 (diff)
downloadmruby-87c7064bad4fb9403ebf4b72be33f2dc51fa46db.tar.gz
mruby-87c7064bad4fb9403ebf4b72be33f2dc51fa46db.zip
Update `mrb_get_args()` keyword argument support [incompatible]
* `mrb_kwargs` structure reordered (`values` and `rest` come last) * take symbols instead of C `char*`
Diffstat (limited to 'src/class.c')
-rw-r--r--src/class.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/class.c b/src/class.c
index 668f9a6ce..e8f9b7638 100644
--- a/src/class.c
+++ b/src/class.c
@@ -1254,7 +1254,7 @@ mrb_get_args(mrb_state *mrb, const char *format, ...)
else {
uint32_t kwnum = kwargs->num;
uint32_t required = kwargs->required;
- const char *const *kname = kwargs->table;
+ const mrb_sym *kname = kwargs->table;
mrb_value *values = kwargs->values;
uint32_t j;
const uint32_t keyword_max = 40;
@@ -1264,16 +1264,16 @@ mrb_get_args(mrb_state *mrb, const char *format, ...)
}
for (j = required; j > 0; j --, kname ++, values ++) {
- mrb_value k = mrb_symbol_value(mrb_intern_cstr(mrb, *kname));
+ mrb_value k = mrb_symbol_value(*kname);
if (!mrb_hash_key_p(mrb, ksrc, k)) {
- mrb_raisef(mrb, E_ARGUMENT_ERROR, "missing keyword: %s", *kname);
+ mrb_raisef(mrb, E_ARGUMENT_ERROR, "missing keyword: %n", *kname);
}
*values = mrb_hash_delete_key(mrb, ksrc, k);
mrb_gc_protect(mrb, *values);
}
for (j = kwnum - required; j > 0; j --, kname ++, values ++) {
- mrb_value k = mrb_symbol_value(mrb_intern_cstr(mrb, *kname));
+ mrb_value k = mrb_symbol_value(*kname);
if (mrb_hash_key_p(mrb, ksrc, k)) {
*values = mrb_hash_delete_key(mrb, ksrc, k);
mrb_gc_protect(mrb, *values);