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("#<ISeq: uninitialized>"); } else { - return rb_sprintf("#<ISeq:%s@%s:%d (%d,%d)-(%d,%d)>", - RSTRING_PTR(iseq->body->location.label), RSTRING_PTR(rb_iseq_path(iseq)), + return rb_sprintf("#<ISeq:%"PRIsVALUE"@%"PRIsVALUE":%d (%d,%d)-(%d,%d)>", + 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__