RCArray is unsafe

Zach the Mystic via Digitalmars-d digitalmars-d at puremagic.com
Tue Mar 3 07:07:32 PST 2015


On Tuesday, 3 March 2015 at 08:04:25 UTC, Manu wrote:
> My immediate impression on this problem:
>
> s.array[0] is being passed to foo from main. s does not belong 
> to main
> (is global), and main does not hold have a reference to s.array.
> Shouldn't main just need to inc/dec array around the call to 
> foo when
> passing un-owned references down the call tree.
> It seems to me that there always needs to be a reference 
> _somewhere_
> on the stack for anything being passed down the call tree 
> (unless the
> function is pure). Seems simplest to capture a stack ref at the 
> top
> level, then as it's received as arguments to each callee, it's
> effectively owned by those functions and they don't need to 
> worry
> anymore.
>
> So, passing global x to some function; inc/dec x around the 
> function
> call that it's passed to...? Then the stack has its own 
> reference, and
> the global reference can go away safely.

This is my position too.

There is another problem being discussed now, however, having to 
do with references to non-rc'd subcomponents of an Rc'd type.


More information about the Digitalmars-d mailing list