From ff222ac27afe712ef6ec2bb74c81cdde1a1fa176 Mon Sep 17 00:00:00 2001 From: Jean Boussier Date: Sat, 24 May 2025 10:02:35 +0200 Subject: compile.c: Handle anonymous variables in `outer_variable_cmp` [Bug #21370] --- test/ruby/test_iseq.rb | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'test/ruby') diff --git a/test/ruby/test_iseq.rb b/test/ruby/test_iseq.rb index 8e6087f667..924c144702 100644 --- a/test/ruby/test_iseq.rb +++ b/test/ruby/test_iseq.rb @@ -859,6 +859,25 @@ class TestISeq < Test::Unit::TestCase end end + def test_serialize_anonymous_outer_variables + iseq = RubyVM::InstructionSequence.compile(<<~'RUBY') + obj = Object.new + def obj.test + [1].each do + raise "Oops" + rescue + return it + end + end + obj + RUBY + + binary = iseq.to_binary # [Bug # 21370] + roundtripped_iseq = RubyVM::InstructionSequence.load_from_binary(binary) + object = roundtripped_iseq.eval + assert_equal 1, object.test + end + def test_loading_kwargs_memory_leak assert_no_memory_leak([], "#{<<~"begin;"}", "#{<<~'end;'}", rss: true) a = iseq_to_binary(RubyVM::InstructionSequence.compile("foo(bar: :baz)")) -- cgit v1.2.3