From d0ac6d5879c8d2132a7419ff2b8a4fb3b3a28597 Mon Sep 17 00:00:00 2001 From: nobu Date: Tue, 25 Nov 2014 18:44:16 +0000 Subject: object.c: preserve encodings * object.c (inspect_i): preserve encodings in inspected result string. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48574 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- object.c | 10 ++-------- test/ruby/test_object.rb | 6 ++++-- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/object.c b/object.c index 567dec1b10..446d52a1d6 100644 --- a/object.c +++ b/object.c @@ -489,8 +489,6 @@ inspect_i(st_data_t k, st_data_t v, st_data_t a) ID id = (ID)k; VALUE value = (VALUE)v; VALUE str = (VALUE)a; - VALUE str2; - const char *ivname; /* need not to show internal data */ if (CLASS_OF(value) == 0) return ST_CONTINUE; @@ -502,12 +500,8 @@ inspect_i(st_data_t k, st_data_t v, st_data_t a) else { rb_str_cat2(str, ", "); } - ivname = rb_id2name(id); - rb_str_cat2(str, ivname); - rb_str_cat2(str, "="); - str2 = rb_inspect(value); - rb_str_append(str, str2); - OBJ_INFECT(str, str2); + rb_str_catf(str, "%"PRIsVALUE"=%+"PRIsVALUE, + rb_id2str(id), value); return ST_CONTINUE; } diff --git a/test/ruby/test_object.rb b/test/ruby/test_object.rb index 0fe9471fa6..94a6e9d201 100644 --- a/test/ruby/test_object.rb +++ b/test/ruby/test_object.rb @@ -758,10 +758,12 @@ class TestObject < Test::Unit::TestCase def initialize @\u{3044} = 42 end - new.inspect + new end EOS - assert_match(/\bInspect\u{3042}:.* @\u{3044}=42\b/, x) + assert_match(/\bInspect\u{3042}:.* @\u{3044}=42\b/, x.inspect) + x.instance_variable_set("@\u{3046}".encode(Encoding::EUC_JP), 6) + assert_match(/@\u{3046}=6\b/, x.inspect) end def test_singleton_class -- cgit v1.2.3