summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authordearblue <[email protected]>2020-04-24 21:15:34 +0900
committerdearblue <[email protected]>2020-04-24 21:32:35 +0900
commit26eb29547b6e2c5b94ec1bf4b0e90a7821b04be1 (patch)
tree281aa41711386929f4ffe46ab6deccf2bdae5226 /src
parentd3a02a297f5a2a7a7f5951168bd837e3733a3071 (diff)
downloadmruby-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.c4
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;