Issue #2545 has been updated by Tomoyuki Chikanaga.


Hi,

According to test added by r32360, 

a = [ 5, 6, 7, 8, 9, 10 ]
a.delete_if {|i| break i if i > 8; i < 7}

it results
a # => [7, 8]

But I feel it could be [7, 8, 9, 10] because block didn't *return true* for 9, 10.
Matz, How do you think about it?
----------------------------------------
Bug #2545: Array#delete_if is borked if user calls 'break'
http://redmine.ruby-lang.org/issues/2545

Author: Brian Candler
Status: Closed
Priority: Normal
Assignee: Yukihiro Matsumoto
Category: core
Target version: 
ruby -v: ruby 1.8.7 (2009-06-12 patchlevel 174) [x86_64-linux] 


=begin
 Array is corrupted if you break out of a delete_if { ... } loop. I would expect that the elements already marked as deleted would be deleted, and the remainder of the array would be unchanged.
 
 >> a = [5,6,7,8,9,10]
 => [5, 6, 7, 8, 9, 10]
 >> a.delete_if { |x| break if x > 8; x < 7 }
 => nil
 >> a
 => [7, 8, 7, 8, 9, 10]
 
 >> RUBY_VERSION
 => "1.8.7"
 >> RUBY_PATCHLEVEL
 => 174
=end



-- 
http://redmine.ruby-lang.org