Project

General

Profile

Actions

Bug #5752

closed

Array#delete_if side effects due to changeset r32360

Added by gettalong (Thomas Leitner) almost 13 years ago. Updated almost 13 years ago.

Status:
Closed
Assignee:
-
Target version:
ruby -v:
ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-linux]
Backport:
[ruby-core:41616]

Description

It seems that the changeset r32360 introduced another side effect. Here are two IRB sessions, one in ruby-1.9.2-p136 and the other in ruby-1.9.3-p0:

ruby-1.9.2-p136 :001 > x = [1,2,3,4,5,6,7,8,9]
=> [1, 2, 3, 4, 5, 6, 7, 8, 9]
ruby-1.9.2-p136 :002 > x.delete_if {|i| i == x[i-1]}
=> []

ruby-1.9.3-p0 :001 > x = [1,2,3,4,5,6,7,8,9]
=> [1, 2, 3, 4, 5, 6, 7, 8, 9]
ruby-1.9.3-p0 :002 > x.delete_if {|i| i == x[i-1]}
=> [2, 3, 4, 5, 6, 7, 8, 9]

If this is indeed the intended behaviour, it should probably be documented clearly that the array is changed instantly every time the block is called and not after the iteration is over.


Files

array.c.patch (719 Bytes) array.c.patch fix delete_if funny_falcon (Yura Sokolov), 12/14/2011 07:03 PM

Related issues 1 (0 open1 closed)

Related to Ruby master - Feature #10714: Array#reject! nonlinear performance problemClosedakr (Akira Tanaka)01/08/2015Actions
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0