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

ruby-changes:72503

From: Yusuke <ko1@a...>
Date: Mon, 11 Jul 2022 23:38:53 +0900 (JST)
Subject: [ruby-changes:72503] a871fc4d86 (master): Fix a regression of b2e58b02aec73f9c350bf109c021c180fc699ccc

https://git.ruby-lang.org/ruby.git/commit/?id=a871fc4d86

From a871fc4d86e857b4c580604d2654877135484896 Mon Sep 17 00:00:00 2001
From: Yusuke Endoh <mame@r...>
Date: Mon, 11 Jul 2022 14:53:12 +0900
Subject: Fix a regression of b2e58b02aec73f9c350bf109c021c180fc699ccc

At that commit, I fixed a wrong conditional expression that was always
true.  However, that seemed to have caused a regression. [Bug #18906]

This change removes the condition to make the code always enabled.
It had been enabled until that commit, albeit unintentionally, and even
if it is enabled it only consumes a tiny bit of memory, so I believe it
is harmless. [Bug #18906]
---
 compile.c                      | 11 ++++-------
 test/coverage/test_coverage.rb | 21 +++++++++++++++++++++
 2 files changed, 25 insertions(+), 7 deletions(-)

diff --git a/compile.c b/compile.c
index 82bed47923..08895134bd 100644
--- a/compile.c
+++ b/compile.c
@@ -2226,13 +2226,10 @@ static int https://github.com/ruby/ruby/blob/trunk/compile.c#L2226
 add_adjust_info(struct iseq_insn_info_entry *insns_info, unsigned int *positions,
                 int insns_info_index, int code_index, const ADJUST *adjust)
 {
-    if (insns_info[insns_info_index-1].line_no != adjust->line_no) {
-        insns_info[insns_info_index].line_no    = adjust->line_no;
-        insns_info[insns_info_index].events     = 0;
-        positions[insns_info_index]             = code_index;
-        return TRUE;
-    }
-    return FALSE;
+    insns_info[insns_info_index].line_no    = adjust->line_no;
+    insns_info[insns_info_index].events     = 0;
+    positions[insns_info_index]             = code_index;
+    return TRUE;
 }
 
 /**
diff --git a/test/coverage/test_coverage.rb b/test/coverage/test_coverage.rb
index 882368363a..eefe7e7da6 100644
--- a/test/coverage/test_coverage.rb
+++ b/test/coverage/test_coverage.rb
@@ -181,6 +181,27 @@ class TestCoverage < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/coverage/test_coverage.rb#L181
     end;
   end
 
+  def test_coverage_ensure_if_return
+    result = {
+      :branches => {
+        [:if, 0, 3, 1, 6, 4] => {
+          [:then, 1, 3, 6, 3, 6] => 0,
+          [:else, 2, 5, 3, 5, 9] => 1,
+	},
+      },
+    }
+    assert_coverage(<<~"end;", { branches: true }, result)
+      def flush
+      ensure
+	if $!
+	else
+	  return
+	end
+      end
+      flush
+    end;
+  end
+
   def assert_coverage(code, opt, stdout)
     stdout = [stdout] unless stdout.is_a?(Array)
     stdout = stdout.map {|s| s.to_s }
-- 
cgit v1.2.1


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

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