Actions
Bug #10023
closedHash#merge fails duplicating objects
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
Updated by coyote (Alexey Babich) over 10 years ago
Please, also note that Rails' deep_merge
does not help
Updated by coyote (Alexey Babich) over 10 years ago
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"}}
Updated by coyote (Alexey Babich) over 10 years ago
Please, note that only Rails' deep_dup
seems helpful to workaround the issue
Updated by nobu (Nobuyoshi Nakada) over 10 years ago
- Status changed from Open to Rejected
Not a bug.
A[:b]
and c[:b]
refer the same object.
Check its object_id
.
Actions
Like0
Like0Like0Like0Like0