Issue #22021 has been updated by Eregon (Benoit Daloze). Status changed from Open to Rejected I think this is safe to reject, I think it's not feasible to change this. One should avoid mutating the Array while iterating, otherwise this kind of behavior is expected. ---------------------------------------- Bug #22021: Array#delete_if may delete wrong object if array has been altered already https://bugs.ruby-lang.org/issues/22021#change-117170 * Author: chucke (Tiago Cardoso) * Status: Rejected * ruby -v: 4.0.2 * Backport: 3.3: UNKNOWN, 3.4: UNKNOWN, 4.0: UNKNOWN ---------------------------------------- The simplest example I can come up with: ```ruby $ar = ar = [1, 2, 3, 4, 5] def del(i) $ar.delete(i) end ar.delete_if { |e| e == 2 ? (del(e) && true) : false } p ar #=> [1, 4, 5], and it should be [1, 3, 4, 5] ``` -- https://bugs.ruby-lang.org/