add mrb_ary_modify(mrb,a); you have to ensure mrb_value a to be an array; ref #1554

parent 0fe744f9
......@@ -35,6 +35,7 @@ struct RArray {
#define RARRAY_PTR(a) (RARRAY(a)->ptr)
#define MRB_ARY_SHARED 256
void mrb_ary_modify(mrb_state*, mrb_value);
void mrb_ary_decref(mrb_state*, mrb_shared_array*);
mrb_value mrb_ary_new_capa(mrb_state*, mrb_int);
mrb_value mrb_ary_new(mrb_state *mrb);
......
......@@ -138,6 +138,16 @@ ary_modify(mrb_state *mrb, struct RArray *a)
}
}
void
mrb_ary_modify(mrb_state *mrb, mrb_value ary)
{
struct RArray *a;
a = mrb_ary_ptr(ary);
mrb_write_barrier(mrb, (struct RBasic*)a);
ary_modify(mrb, a);
}
static void
ary_make_shared(mrb_state *mrb, struct RArray *a)
{
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment