зеркало из https://github.com/github/ruby.git
Ensure result encoding is the same as input encoding for String#gsub. [Bug #4340].
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30806 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
b1986003bd
Коммит
edaf78dfb6
|
@ -1,3 +1,8 @@
|
|||
Sun Feb 6 12:46:02 2011 Eric Hodel <drbrain@segment7.net>
|
||||
|
||||
* string.c (gsub): Ensure result encoding is the same as input
|
||||
encoding. [Bug #4340].
|
||||
|
||||
Sun Feb 6 12:18:25 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* parse.y (words, qwords): dispatch array events. based on a
|
||||
|
|
1
string.c
1
string.c
|
@ -3745,6 +3745,7 @@ str_gsub(int argc, VALUE *argv, VALUE str, int bang)
|
|||
slen = RSTRING_LEN(str);
|
||||
cp = sp;
|
||||
str_enc = STR_ENC_GET(str);
|
||||
rb_enc_associate(dest, str_enc);
|
||||
|
||||
do {
|
||||
n++;
|
||||
|
|
|
@ -674,6 +674,21 @@ class TestString < Test::Unit::TestCase
|
|||
assert_raise(ArgumentError) { "foo".gsub }
|
||||
end
|
||||
|
||||
def test_gsub_encoding
|
||||
a = S("hello world")
|
||||
a.force_encoding Encoding::UTF_8
|
||||
|
||||
b = S("hi")
|
||||
b.force_encoding Encoding::US_ASCII
|
||||
|
||||
assert_equal Encoding::UTF_8, a.gsub(/hello/, b).encoding
|
||||
|
||||
c = S("everybody")
|
||||
c.force_encoding Encoding::US_ASCII
|
||||
|
||||
assert_equal Encoding::UTF_8, a.gsub(/world/, c).encoding
|
||||
end
|
||||
|
||||
def test_gsub!
|
||||
a = S("hello")
|
||||
b = a.dup
|
||||
|
|
Загрузка…
Ссылка в новой задаче