Project

General

Profile

Actions

Bug #7995

closed

RubyVM::InstructionSequence to_a not working for blocks

Added by mmeltner (Michael Meltner) almost 12 years ago. Updated almost 10 years ago.

Status:
Closed
Target version:
ruby -v:
-
Backport:
[ruby-core:53077]

Description

Hello,

I try to convert this code into an array via RubyVM::InstructionSequence:

def test
yield
end
test do
puts "hi there"
end

then read it back via "iseq_s_load".

This causes an error that there is no block defined:
:in test': no block given (yield) (LocalJumpError) from <compiled>:in '

I assume there is a bug in iseq.c, line 1778:
rb_hash_aset(e, ID2SYM(rb_intern("blockptr")), ci->blockiseq ? seq_data_to_ary(ci->blockiseq) : Qnil);

as the corresponding line in compile.c is this:
VALUE vblock = rb_hash_aref(op, ID2SYM(rb_intern("block")));

so is the symbol name mixed up between "block" and "blockptr" ?

  • Michael

Related issues 1 (0 open1 closed)

Is duplicate of Ruby master - Bug #9455: Blocks do not round-trip properly through ISeq dump/loadClosed01/27/2014Actions
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0