string.c: reset code range

* string.c (rb_str_substr): need to reset code range for shared
  string too, not only copied string.
  [ruby-core:62842] [Bug #9882]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46243 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2014-05-30 02:33:38 +00:00
parent 361978beb2
commit 950508e9b7
3 changed files with 9 additions and 1 deletions

View File

@ -1,3 +1,9 @@
Fri May 30 11:33:35 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
* string.c (rb_str_substr): need to reset code range for shared
string too, not only copied string.
[ruby-core:62842] [Bug #9882]
Fri May 30 10:22:21 2014 Mark Lorenz <mlorenz@covermymeds.com>
* lib/erb.rb (result): [DOC] no longer accepts a Proc, as

View File

@ -1894,10 +1894,10 @@ rb_str_substr(VALUE str, long beg, long len)
}
else {
str2 = rb_str_new_with_class(str, p, len);
rb_enc_cr_str_copy_for_substr(str2, str);
OBJ_INFECT(str2, str);
RB_GC_GUARD(str);
}
rb_enc_cr_str_copy_for_substr(str2, str);
return str2;
}

View File

@ -894,6 +894,8 @@ class TestString < Test::Unit::TestCase
assert_not_equal(S("a").hash, S("a\0").hash, bug4104)
bug9172 = '[ruby-core:58658] [Bug #9172]'
assert_not_equal(S("sub-setter").hash, S("discover").hash, bug9172)
bug9882 = '[ruby-core:62842] [Bug #9882]'
assert_equal(S(bug9882).hash, S("\u{30c6 30b9 30c8 2019}#{bug9882}")[4..-1].hash, bug9882)
end
def test_hash_random