* string.c (rb_str_inspect): append for each chars instead of bulk
copy if encoding conversion is needed. [ruby-core:33283] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29868 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
456f3980b2
commit
6ade3a4291
@ -1,3 +1,8 @@
|
|||||||
|
Mon Nov 22 18:33:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
|
* string.c (rb_str_inspect): append for each chars instead of bulk
|
||||||
|
copy if encoding conversion is needed. [ruby-core:33283]
|
||||||
|
|
||||||
Mon Nov 22 14:22:45 2010 NARUSE, Yui <naruse@ruby-lang.org>
|
Mon Nov 22 14:22:45 2010 NARUSE, Yui <naruse@ruby-lang.org>
|
||||||
|
|
||||||
* time.c (time_zone): use rb_locale_str_new_cstr to set encoding
|
* time.c (time_zone): use rb_locale_str_new_cstr to set encoding
|
||||||
|
2
string.c
2
string.c
@ -4238,9 +4238,11 @@ rb_str_inspect(VALUE str)
|
|||||||
(cc == '$' || cc == '@' || cc == '{')))) {
|
(cc == '$' || cc == '@' || cc == '{')))) {
|
||||||
if (p - n > prev) str_buf_cat(result, prev, p - n - prev);
|
if (p - n > prev) str_buf_cat(result, prev, p - n - prev);
|
||||||
str_buf_cat2(result, "\\");
|
str_buf_cat2(result, "\\");
|
||||||
|
if (enc == resenc) {
|
||||||
prev = p - n;
|
prev = p - n;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
switch (c) {
|
switch (c) {
|
||||||
case '\n': cc = 'n'; break;
|
case '\n': cc = 'n'; break;
|
||||||
case '\r': cc = 'r'; break;
|
case '\r': cc = 'r'; break;
|
||||||
|
@ -1890,10 +1890,12 @@ class TestString < Test::Unit::TestCase
|
|||||||
end
|
end
|
||||||
|
|
||||||
def test_ascii_incomat_inspect
|
def test_ascii_incomat_inspect
|
||||||
|
bug4081 = '[ruby-core:33283]'
|
||||||
[Encoding::UTF_16LE, Encoding::UTF_16BE,
|
[Encoding::UTF_16LE, Encoding::UTF_16BE,
|
||||||
Encoding::UTF_32LE, Encoding::UTF_32BE].each do |e|
|
Encoding::UTF_32LE, Encoding::UTF_32BE].each do |e|
|
||||||
assert_equal('"abc"', "abc".encode(e).inspect)
|
assert_equal('"abc"', "abc".encode(e).inspect)
|
||||||
assert_equal('"\\u3042\\u3044\\u3046"', "\u3042\u3044\u3046".encode(e).inspect)
|
assert_equal('"\\u3042\\u3044\\u3046"', "\u3042\u3044\u3046".encode(e).inspect)
|
||||||
|
assert_equal('"ab\\"c"', "ab\"c".encode(e).inspect, bug4081)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user