Index: array.c =================================================================== --- array.c (revision 33907) +++ array.c (working copy) @@ -1730,8 +1730,8 @@ VALUE val, tmp, result; if (RARRAY_LEN(ary) == 0) return rb_usascii_str_new(0, 0); - if (OBJ_TAINTED(ary) || OBJ_TAINTED(sep)) taint = TRUE; - if (OBJ_UNTRUSTED(ary) || OBJ_UNTRUSTED(sep)) untrust = TRUE; + if (OBJ_TAINTED(ary) || OBJ_TAINTED(sep)&&RARRAY_LEN(ary)>1) taint = TRUE; + if (OBJ_UNTRUSTED(ary) || OBJ_UNTRUSTED(sep)&&RARRAY_LEN(ary)>1) untrust = TRUE; if (!NIL_P(sep)) { StringValue(sep);