DIP77 - Fix unsafe RC pass by 'ref'
via Digitalmars-d
digitalmars-d at puremagic.com
Fri Apr 10 02:14:03 PDT 2015
On Friday, 10 April 2015 at 08:47:09 UTC, Walter Bright wrote:
> On 4/10/2015 12:10 AM, "Ola Fosheim =?UTF-8?B?R3LDuHN0YWQi?=
>> ref1 -> Node->RCRef->Edge(RCO)->Node->RCRef->Edge(RCO)->Node"X"
>> ref2 -> Node"X"
>
> Because with two parameters, if one is a ref coming from an RCO
> rc1, and the other is a ref to a type that is the root of a
> graph that contains an RCO type, then the rc1 is copied.
ref1 -> RCO1 -> N1 -> RCRef1 -> RCO2 -> N2 -> RCRef3 -> RCO3 -> N3
ref2 -> N3
N1..N3 represent resources (like a file).
process(ref1,ref2){
ref1.stuff.stuff.stuff.release(); // Node2 and Node3 is
released.
ref2.read(); // fails/garbage
}
More information about the Digitalmars-d
mailing list