Issue #10722 has been updated by Nobuyoshi Nakada.

Status changed from Open to Closed
% Done changed from 0 to 100

Applied in changeset r49196.

----------
array.c: keep consistency

* array.c (rb_ary_select_bang): keep the array consistent by
  removing unselected values soon.  [ruby-dev:48805] [Bug #10722]

----------------------------------------
Bug #10722: Array#keep_if is borked if user calls 'break'
https://bugs.ruby-lang.org/issues/10722#change-50890

* Author: _ wanabe
* Status: Closed
* Priority: Normal
* Assignee: 
* Category: 
* Target version: 
* ruby -v: ruby 2.3.0dev (2015-01-09 trunk 49192) [x86_64-darwin14]
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN
----------------------------------------
ref. [Bug #2545]

```
$ ruby -e 'a = [5,6,7,8,9,10]; a.keep_if { |x| break if x > 8; x >= 7 }; p a'
[7, 8, 7, 8, 9, 10]
$ ruby -e 'a = [5,6,7,8,9,10]; a.delete_if { |x| break if x > 8; x < 7 }; p a'
[7, 8, 9, 10]
```

I was expecting the above scripts to be same results.



-- 
https://bugs.ruby-lang.org/