From: nobu@... Date: 2015-01-09T23:30:19+00:00 Subject: [ruby-core:67465] [ruby-trunk - Bug #2545] Array#delete_if is borked if user calls 'break' Issue #2545 has been updated by Nobuyoshi Nakada. Related to Bug #10714: Array#reject! nonlinear performance problem added ---------------------------------------- Bug #2545: Array#delete_if is borked if user calls 'break' https://bugs.ruby-lang.org/issues/2545#change-50887 * 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] * Backport: ---------------------------------------- =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 -- https://bugs.ruby-lang.org/