Actions
Bug #15479
closedArray#reject! modifies literal Array
Description
This was found by running ruby/spec with -R2 (such as mspec -R2 -fs core/array/reject_spec.rb).
TravisCI log on https://travis-ci.org/ruby/spec/jobs/473175799#L539
Here is a simple reproducer.
MRI seems to modify the Array literal permanently:
3.times do
a = [1, 2, 3, 4]
puts "initial: #{a}"
begin
a.reject! do |x|
case x
when 2 then true
when 3 then raise StandardError, 'Oops'
else false
end
end
rescue StandardError
end
puts "after: #{a}"
end
prints
initial: [1, 2, 3, 4]
after: [1, 3, 4]
initial: [1, 3, 4, 4]
after: [1, 3, 4, 4]
initial: [1, 3, 4, 4]
after: [1, 3, 4, 4]
2.5.3 behaves fine, but trunk is also affected.
Actions
Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0