diff options
| -rw-r--r-- | include/mruby/array.h | 1 | ||||
| -rw-r--r-- | src/array.c | 10 |
2 files changed, 11 insertions, 0 deletions
diff --git a/include/mruby/array.h b/include/mruby/array.h index 29f9be55e..60088c98a 100644 --- a/include/mruby/array.h +++ b/include/mruby/array.h @@ -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); diff --git a/src/array.c b/src/array.c index 526cf4973..705aece07 100644 --- a/src/array.c +++ b/src/array.c @@ -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) { |
