From 8db269edb3550a85dfab9b193ea115ca36912ced Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Tue, 31 Aug 2021 16:58:29 -0700 Subject: Guard array when appending This prevents early collection of the array. The GC doesn't see the array on the stack when Ruby is compiled with optimizations enabled Thanks @jhaberman for the test case [ruby-core:105099] [Bug #18140] --- test/-ext-/array/test_to_ary_concat.rb | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 test/-ext-/array/test_to_ary_concat.rb (limited to 'test') diff --git a/test/-ext-/array/test_to_ary_concat.rb b/test/-ext-/array/test_to_ary_concat.rb new file mode 100644 index 0000000000..feb1bc1109 --- /dev/null +++ b/test/-ext-/array/test_to_ary_concat.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: false +require 'test/unit' +require '-test-/array/to_ary_concat' + +class TestConcatStress < Test::Unit::TestCase + def setup + @stress_level = GC.stress + GC.stress = true + end + + def teardown + GC.stress = @stress_level + end + + def test_concat + arr = [nil] + bar = Bug::Bar.new + arr.concat(bar) + end +end -- cgit v1.2.3