summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2020-04-24 23:36:12 +0900
committerGitHub <[email protected]>2020-04-24 23:36:12 +0900
commit8b5c19218d1de46a3cdb89b6413b336b78031532 (patch)
tree43ebf0d55fef5eb0e135884aacbbae247926c714
parentf6408c7b115a6c5f70db3cf20c8d27f77954ea65 (diff)
parent26eb29547b6e2c5b94ec1bf4b0e90a7821b04be1 (diff)
downloadmruby-8b5c19218d1de46a3cdb89b6413b336b78031532.tar.gz
mruby-8b5c19218d1de46a3cdb89b6413b336b78031532.zip
Merge pull request #4976 from dearblue/splice-undef
Support `undef` for `mrb_ary_splice()` instead of `[]`
-rw-r--r--include/mruby/array.h1
-rw-r--r--src/array.c4
2 files changed, 5 insertions, 0 deletions
diff --git a/include/mruby/array.h b/include/mruby/array.h
index e2dd9bb1c..fd4094a02 100644
--- a/include/mruby/array.h
+++ b/include/mruby/array.h
@@ -239,6 +239,7 @@ MRB_API mrb_value mrb_ary_entry(mrb_value ary, mrb_int offset);
* @param head Beginning position of a replacement subsequence.
* @param len Length of a replacement subsequence.
* @param rpl The array of replacement elements.
+ * It is possible to pass `mrb_undef_value()` instead of an empty array.
* @return The receiver array.
*/
MRB_API mrb_value mrb_ary_splice(mrb_state *mrb, mrb_value self, mrb_int head, mrb_int len, mrb_value rpl);
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;