From: Tomoyuki Chikanaga Date: 2011-07-02T20:15:36+09:00 Subject: [ruby-core:37737] [Ruby 1.9 - Bug #2545] Array#delete_if is borked if user calls 'break' 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