From 64be4cfb5ef7c36bf3dc72a04e98c61aea364713 Mon Sep 17 00:00:00 2001 From: nobu Date: Thu, 11 Jan 2018 08:34:55 +0000 Subject: [PATCH] iseq.c: child iseq encoding * iseq.c (iseq_inspect): preserve the encoding of child iseqs. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61767 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- iseq.c | 4 ++-- test/ruby/test_iseq.rb | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/iseq.c b/iseq.c index 62271ab3c3..281c13ce45 100644 --- a/iseq.c +++ b/iseq.c @@ -1780,8 +1780,8 @@ iseq_inspect(const rb_iseq_t *iseq) return rb_sprintf("#"); } else { - return rb_sprintf("#", - RSTRING_PTR(iseq->body->location.label), RSTRING_PTR(rb_iseq_path(iseq)), + return rb_sprintf("#", + iseq->body->location.label, rb_iseq_path(iseq), iseq->body->location.code_location.beg_pos.lineno, iseq->body->location.code_location.beg_pos.lineno, iseq->body->location.code_location.beg_pos.column, diff --git a/test/ruby/test_iseq.rb b/test/ruby/test_iseq.rb index 92340bd8fd..6e81c63915 100644 --- a/test/ruby/test_iseq.rb +++ b/test/ruby/test_iseq.rb @@ -91,6 +91,11 @@ class TestISeq < Test::Unit::TestCase asm = compile(src).disasm assert_equal(src.encoding, asm.encoding) assert_predicate(asm, :valid_encoding?) + + obj = Object.new + name = "\u{2603 26a1}" + obj.instance_eval("def #{name}; tap {}; end") + assert_include(RubyVM::InstructionSequence.of(obj.method(name)).disasm, name) end LINE_BEFORE_METHOD = __LINE__