ruby-changes:27484
From: ko1 <ko1@a...>
Date: Thu, 28 Feb 2013 20:26:35 +0900 (JST)
Subject: [ruby-changes:27484] ko1:r39536 (trunk): * iseq.c (iseq_data_to_ary): fix condition.
ko1 2013-02-28 20:26:23 +0900 (Thu, 28 Feb 2013) New Revision: 39536 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=39536 Log: * iseq.c (iseq_data_to_ary): fix condition. r34303 introduces a bug to avoid all line information from a result of ISeq#to_a. This is a regression problem from 2.0.0p0. * test/ruby/test_iseq.rb: add a test of lines after ISeq#to_a. Modified files: trunk/ChangeLog trunk/iseq.c trunk/test/ruby/test_iseq.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 39535) +++ ChangeLog (revision 39536) @@ -1,3 +1,11 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1 +Thu Feb 28 20:22:04 2013 Koichi Sasada <ko1@a...> + + * iseq.c (iseq_data_to_ary): fix condition. + r34303 introduces a bug to avoid all line information from + a result of ISeq#to_a. This is a regression problem from 2.0.0p0. + + * test/ruby/test_iseq.rb: add a test of lines after ISeq#to_a. + Thu Feb 28 08:20:33 2013 Eric Hodel <drbrain@s...> * lib/rubygems/available_set.rb: Undent for style Index: iseq.c =================================================================== --- iseq.c (revision 39535) +++ iseq.c (revision 39536) @@ -1841,7 +1841,7 @@ iseq_data_to_ary(rb_iseq_t *iseq) https://github.com/ruby/ruby/blob/trunk/iseq.c#L1841 rb_ary_push(body, (VALUE)label); } - if (iseq->line_info_size < ti && iseq->line_info_table[ti].position == pos) { + if (ti < iseq->line_info_size && iseq->line_info_table[ti].position == pos) { line = iseq->line_info_table[ti].line_no; rb_ary_push(body, INT2FIX(line)); ti++; Index: test/ruby/test_iseq.rb =================================================================== --- test/ruby/test_iseq.rb (revision 39535) +++ test/ruby/test_iseq.rb (revision 39536) @@ -9,6 +9,18 @@ class TestISeq < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/ruby/test_iseq.rb#L9 assert_normal_exit('p RubyVM::InstructionSequence.compile("1", "mac", "", 0).to_a', bug5894) end + def test_to_a_lines + src = <<-EOS + p __LINE__ # 1 + p __LINE__ # 2 + # 3 + p __LINE__ # 4 + EOS + body = RubyVM::InstructionSequence.new(src).to_a[13] + lines = body.find_all{|e| e.kind_of? Fixnum} + assert_equal [1, 2, 4], lines + end + def test_unsupport_type ary = RubyVM::InstructionSequence.compile("p").to_a ary[9] = :foobar -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/