summaryrefslogtreecommitdiff
path: root/test/-ext-
diff options
context:
space:
mode:
authorAaron Patterson <tenderlove@ruby-lang.org>2021-08-31 16:58:29 -0700
committerAaron Patterson <tenderlove@ruby-lang.org>2021-09-01 10:58:20 -0700
commit8db269edb3550a85dfab9b193ea115ca36912ced (patch)
treeb50e4f3043f1aa0a7d3c6f87c00cdfe6832b9dcc /test/-ext-
parent0aa82b592fc3296ffde1f3fff59018a998c3ade0 (diff)
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]
Diffstat (limited to 'test/-ext-')
-rw-r--r--test/-ext-/array/test_to_ary_concat.rb20
1 files changed, 20 insertions, 0 deletions
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