diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2013-10-31 23:34:08 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2013-10-31 23:34:08 +0900 |
| commit | af03812877c914de787e70735eb89084434b21f1 (patch) | |
| tree | c85caab5e6eb09e7584543753eb2dfa7bd41fa35 | |
| parent | 0fe744f9192bda774749de7d8426033ae9cfd084 (diff) | |
| download | mruby-af03812877c914de787e70735eb89084434b21f1.tar.gz mruby-af03812877c914de787e70735eb89084434b21f1.zip | |
add mrb_ary_modify(mrb,a); you have to ensure mrb_value a to be an array; ref #1554
| -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) { |
