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