From: Kevin Olbrich Date: 2006-08-16T01:18:21+09:00 Subject: Ruby bug or not? Using 1.8.4 on OSX. class CopyTest attr_accessor :one end a = CopyTest.new a.one = [1,2,3,4] b = a.clone a.freeze b.one.each_with_index do |item,index| b.one.delete_at(index) if item == 2 end # this is supposed to delete the first item in the array that matches # instead of all matching items b.one #=> [1,3,4] No surprises so far... a.one #=> [1,3,4] Now that is weird. a #=> # b #=> # Not the same object, so why does changing one affect the other? if you do this.... a.one = [1,2,3,4] b=a.clone b.one = [4,3,2,1] then things work normally a.one #=> [1,2,3,4] b.one #=> [4,3,2,1] I suspect there is a bug in the 'delete_at' function or in the way that objects are cloned that causes them to refer to the same array in some cases. Thoughts? a.one = [1,2,3,4] #=> TypeError: can't modify frozen object Strange, I also managed to change a frozen object this way. _Kevin www.sciwerks.com -- Posted with http://DevLists.com. Sign up and save your mailbox.