New buffer for shared string

* string.c (rb_str_init): allocate new buffer if the string is
  shared.  [Bug #15937]
This commit is contained in:
Nobuyoshi Nakada 2019-06-19 14:03:02 +09:00
parent 148f50fc78
commit 8797f48373
No known key found for this signature in database
GPG key ID: 4BC7D6DF58D8DF60
2 changed files with 14 additions and 0 deletions

View file

@ -79,6 +79,11 @@ class TestString < Test::Unit::TestCase
assert_equal("mystring", str.__send__(:initialize, str, capacity: 1000))
end
def test_initialize_shared
String.new(str = "mystring" * 10).__send__(:initialize, capacity: str.bytesize)
assert_equal("mystring", str[0, 8])
end
def test_initialize_nonstring
assert_raise(TypeError) {
S(1)