summaryrefslogtreecommitdiffhomepage
path: root/src/array.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2015-07-12 22:42:18 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2015-07-12 22:42:18 +0900
commit4dac03cb2d53227bde2e5f50e70ca79596807e11 (patch)
treea57071ca76011c19e4dcf7ba5c3976f40f7cf8da /src/array.c
parent39dd1822446d02f21887bf043e34ac6cf0133b6f (diff)
parentdd558a108d20d2198cb52cf743e2ecfc868cfa1c (diff)
downloadmruby-4dac03cb2d53227bde2e5f50e70ca79596807e11.tar.gz
mruby-4dac03cb2d53227bde2e5f50e70ca79596807e11.zip
Merge pull request #2883 from jbreeden/array_join_nil
Patching array join
Diffstat (limited to 'src/array.c')
-rw-r--r--src/array.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/array.c b/src/array.c
index f48719310..2fb662c92 100644
--- a/src/array.c
+++ b/src/array.c
@@ -295,7 +295,7 @@ mrb_ary_plus(mrb_state *mrb, mrb_value self)
mrb_get_args(mrb, "a", &ptr, &blen);
if (ARY_MAX_SIZE - blen < a1->len) {
- mrb_raise(mrb, E_ARGUMENT_ERROR, "array size too big");
+ mrb_raise(mrb, E_ARGUMENT_ERROR, "array size too big");
}
a2 = ary_new_capa(mrb, a1->len + blen);
array_copy(a2->ptr, a1->ptr, a1->len);
@@ -349,7 +349,7 @@ mrb_ary_times(mrb_state *mrb, mrb_value self)
}
if (times == 0) return mrb_ary_new(mrb);
if (ARY_MAX_SIZE / times < a1->len) {
- mrb_raise(mrb, E_ARGUMENT_ERROR, "array size too big");
+ mrb_raise(mrb, E_ARGUMENT_ERROR, "array size too big");
}
a2 = ary_new_capa(mrb, a1->len * times);
ptr = a2->ptr;
@@ -1031,7 +1031,11 @@ mrb_ary_join_m(mrb_state *mrb, mrb_value ary)
{
mrb_value sep = mrb_nil_value();
- mrb_get_args(mrb, "|S", &sep);
+ mrb_get_args(mrb, "|o", &sep);
+ if (!(mrb_nil_p(sep) || mrb_type(sep) == MRB_TT_STRING)) {
+ mrb_raise(mrb, E_TYPE_ERROR, "expected String");
+ return mrb_nil_value();
+ }
return mrb_ary_join(mrb, ary, sep);
}