Bug #10023
closed
Hash#merge fails duplicating objects
Added by coyote (Alexey Babich) over 10 years ago.
Updated over 10 years ago.
Description
Here is an example in IRB (ruby 2.1.2):
A={b:{}}
=> {:b=>{}}
c=A.merge({c: {d: 'e'}})
=> {:b=>{}, :c=>{:d=>"e"}}
c[:b][:d] = "f"
=> "f"
A
=> {:b=>{:d=>"f"}}
Every key, value pair is expected to be duplicated during the merge? Please, investigate if this is a bug
Please, also note that Rails' deep_merge
does not help
The same with duplication
c=A.dup #same .clone
=> {:b=>{}}
c.merge!({c: {d: 'e'}})
=> {:b=>{}, :c=>{:d=>"e"}}
c[:b][:d] = 'bug'
=> "bug"
A
=> {:b=>{:d=>"bug"}}
Please, note that only Rails' deep_dup
seems helpful to workaround the issue
- Status changed from Open to Rejected
Not a bug.
A[:b]
and c[:b]
refer the same object.
Check its object_id
.
Also available in: Atom
PDF
Like0
Like0Like0Like0Like0