зеркало из 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>
|
Sun Feb 6 12:18:25 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
* parse.y (words, qwords): dispatch array events. based on a
|
* 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);
|
slen = RSTRING_LEN(str);
|
||||||
cp = sp;
|
cp = sp;
|
||||||
str_enc = STR_ENC_GET(str);
|
str_enc = STR_ENC_GET(str);
|
||||||
|
rb_enc_associate(dest, str_enc);
|
||||||
|
|
||||||
do {
|
do {
|
||||||
n++;
|
n++;
|
||||||
|
|
|
@ -674,6 +674,21 @@ class TestString < Test::Unit::TestCase
|
||||||
assert_raise(ArgumentError) { "foo".gsub }
|
assert_raise(ArgumentError) { "foo".gsub }
|
||||||
end
|
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!
|
def test_gsub!
|
||||||
a = S("hello")
|
a = S("hello")
|
||||||
b = a.dup
|
b = a.dup
|
||||||
|
|
Загрузка…
Ссылка в новой задаче