[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]