[ruby-dev:48807] [ruby-trunk - Bug #10722] [Closed] Array#keep_if is borked if user calls 'break'
From:
nobu@...
Date:
2015-01-10 01:12:33 UTC
List:
ruby-dev #48807
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/