* string.c (rb_str_split): return duplicated receiver, when no
  splits.  patched by tompng (tomoya ishida) in [ruby-core:82911],
  and the test case by Seiei Miyagi <hanachin@gmail.com>.
  [Bug#13925] [Fix GH-1705]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60002 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2017-09-23 07:09:07 +00:00
Родитель e1be1d0c38
Коммит 8c59fdb8d8
2 изменённых файлов: 6 добавлений и 1 удалений

Просмотреть файл

@ -7371,7 +7371,7 @@ rb_str_split_m(int argc, VALUE *argv, VALUE str)
else if (lim == 1) {
if (RSTRING_LEN(str) == 0)
return rb_ary_new2(0);
return rb_ary_new3(1, str);
return rb_ary_new3(1, rb_str_dup(str));
}
i = 1;
}

Просмотреть файл

@ -1686,6 +1686,11 @@ CODE
}
end
def test_split_dupped
s = "abc"
s.split("b", 1).map(&:upcase!)
assert_equal("abc", s)
end
def test_squeeze
assert_equal(S("abc"), S("aaabbbbccc").squeeze)
assert_equal(S("aa bb cc"), S("aa bb cc").squeeze(S(" ")))