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

This commit is contained in:
Yukihiro "Matz" Matsumoto
2013-10-31 23:34:08 +09:00
parent 0fe744f919
commit af03812877
2 changed files with 11 additions and 0 deletions
+1
View File
@@ -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);
+10
View File
@@ -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)
{