summaryrefslogtreecommitdiff
path: root/array.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2001-11-15 15:56:08 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2001-11-15 15:56:08 +0000
commit35008e2087fd1ef07ad749a75db5417721ef8c69 (patch)
tree0203917a0867aeb9d08babd0a7f3333d6a054428 /array.c
parenta79f85e6cf3911d0f5df62a954eaa963d6bb6558 (diff)
* array.c (rb_ary_join): non-nil separator must be converted to
String. and separators' total length was wrong. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1836 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'array.c')
-rw-r--r--array.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/array.c b/array.c
index 0dfa3ae..f77cfc7 100644
--- a/array.c
+++ b/array.c
@@ -804,8 +804,9 @@ rb_ary_join(ary, sep)
len += 10;
}
}
- if (!NIL_P(sep) && TYPE(sep) == T_STRING) {
- len += RSTRING(sep)->len * RARRAY(ary)->len - 1;
+ if (!NIL_P(sep)) {
+ StringValue(sep);
+ len += RSTRING(sep)->len * (RARRAY(ary)->len - 1);
}
result = rb_str_buf_new(len);
for (i=0; i<RARRAY(ary)->len; i++) {