From f0a64329b1cb8156e0d525d003e5d6ff03b7832f Mon Sep 17 00:00:00 2001 From: dearblue Date: Thu, 22 Oct 2020 22:55:35 +0900 Subject: Prohibit array changes by "a"/"*" specifier of `mrb_get_args()` The "a"/"*" specifier of the `mrb_get_args()` function will now return `const mrb_value *`. This is because it is difficult for the caller to check if it is an array object and write-barrier if necessary. And it requires calling `mrb_ary_modify()` on the unmodified array object, which is also difficult (this is similar to #5087). --- src/kernel.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/kernel.c') diff --git a/src/kernel.c b/src/kernel.c index c34d0bb6e..e29c33874 100644 --- a/src/kernel.c +++ b/src/kernel.c @@ -219,7 +219,7 @@ mrb_obj_class_m(mrb_state *mrb, mrb_value self) } static mrb_value -mrb_obj_extend(mrb_state *mrb, mrb_int argc, mrb_value *argv, mrb_value obj) +mrb_obj_extend(mrb_state *mrb, mrb_int argc, const mrb_value *argv, mrb_value obj) { mrb_int i; @@ -264,7 +264,7 @@ mrb_obj_extend(mrb_state *mrb, mrb_int argc, mrb_value *argv, mrb_value obj) static mrb_value mrb_obj_extend_m(mrb_state *mrb, mrb_value self) { - mrb_value *argv; + const mrb_value *argv; mrb_int argc; mrb_get_args(mrb, "*", &argv, &argc); @@ -524,7 +524,7 @@ static mrb_value mrb_obj_missing(mrb_state *mrb, mrb_value mod) { mrb_sym name; - mrb_value *a; + const mrb_value *a; mrb_int alen; mrb_get_args(mrb, "n*!", &name, &a, &alen); -- cgit v1.2.3