diff options
| author | dearblue <[email protected]> | 2020-04-24 21:15:34 +0900 |
|---|---|---|
| committer | dearblue <[email protected]> | 2020-04-24 21:32:35 +0900 |
| commit | 26eb29547b6e2c5b94ec1bf4b0e90a7821b04be1 (patch) | |
| tree | 281aa41711386929f4ffe46ab6deccf2bdae5226 /src | |
| parent | d3a02a297f5a2a7a7f5951168bd837e3733a3071 (diff) | |
| download | mruby-26eb29547b6e2c5b94ec1bf4b0e90a7821b04be1.tar.gz mruby-26eb29547b6e2c5b94ec1bf4b0e90a7821b04be1.zip | |
Support `undef` for `mrb_ary_splice()` instead of `[]`
When removing elements from an array, it is possible to avoid creating
an empty array.
Before this patch:
```c
mrb_ary_splice(mrb, ary, head, len, mrb_ary_new(mrb));
```
After this patch:
```c
mrb_ary_splice(mrb, ary, head, len, mrb_undef_value());
```
Diffstat (limited to 'src')
| -rw-r--r-- | src/array.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/array.c b/src/array.c index 8547cfff4..6e73bcd8e 100644 --- a/src/array.c +++ b/src/array.c @@ -732,6 +732,10 @@ mrb_ary_splice(mrb_state *mrb, mrb_value ary, mrb_int head, mrb_int len, mrb_val argv = ARY_PTR(r); } } + else if (mrb_undef_p(rpl)) { + argc = 0; + argv = NULL; + } else { argc = 1; argv = &rpl; |
