DIP74 updated with new protocol for function calls

Zach the Mystic via Digitalmars-d digitalmars-d at puremagic.com
Sun Mar 1 08:08:15 PST 2015


On Sunday, 1 March 2015 at 08:57:17 UTC, Matthias Bentrup wrote:
> Note that you can get the same issue without duplicate 
> parameters, if you pass an alias to a global variable.
>
> static A a;
>
> void fun(A x) {
>   a = null; // Releases x
>   x.func();
> }
>
> void main() {
>   a = new A();
>   fun(a);
> }

Well don't do that... :-)

Looks like a fly in the ointment. The most straightforward 
solution is to always add the opAdd/Release cycle when passing 
globals to impures. That's probably good enough. You probably 
don't pass a global to an impure very often anyway.


More information about the Digitalmars-d mailing list