From 26eb29547b6e2c5b94ec1bf4b0e90a7821b04be1 Mon Sep 17 00:00:00 2001 From: dearblue Date: Fri, 24 Apr 2020 21:15:34 +0900 Subject: 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()); ``` --- src/array.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/array.c') 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; -- cgit v1.2.3