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 { ...@@ -35,6 +35,7 @@ struct RArray {
#define RARRAY_PTR(a) (RARRAY(a)->ptr) #define RARRAY_PTR(a) (RARRAY(a)->ptr)
#define MRB_ARY_SHARED 256 #define MRB_ARY_SHARED 256
void mrb_ary_modify(mrb_state*, mrb_value);
void mrb_ary_decref(mrb_state*, mrb_shared_array*); void mrb_ary_decref(mrb_state*, mrb_shared_array*);
mrb_value mrb_ary_new_capa(mrb_state*, mrb_int); mrb_value mrb_ary_new_capa(mrb_state*, mrb_int);
mrb_value mrb_ary_new(mrb_state *mrb); mrb_value mrb_ary_new(mrb_state *mrb);
......
...@@ -138,6 +138,16 @@ ary_modify(mrb_state *mrb, struct RArray *a) ...@@ -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 static void
ary_make_shared(mrb_state *mrb, struct RArray *a) 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