Project

General

Profile

Bug #2545

Array#delete_if is borked if user calls 'break'

Added by candlerb (Brian Candler) over 10 years ago. Updated about 9 years ago.

Status:
Closed
Priority:
Normal
Target version:
-
ruby -v:
ruby 1.8.7 (2009-06-12 patchlevel 174) [x86_64-linux]
Backport:
[ruby-core:27366]

Description

=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


Related issues

Related to Ruby master - Bug #10722: Array#keep_if is borked if user calls 'break'Closed01/09/2015Actions
Related to Ruby master - Feature #10714: Array#reject! nonlinear performance problemClosedakr (Akira Tanaka)01/08/2015Actions

Also available in: Atom PDF