www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - scope pointers in safe code

reply Shachar Shemesh <shachar weka.io> writes:
void fn(scope int* var)  safe {
     (*var)++;
}

void fn2()  safe {
     int a;

     fn(&a);
}

The above program does not compile:
d.d(8): Error: cannot take address of local a in  safe function fn2

I propose that the scope keyword be activated to mean "I do not pass the 
pointer you gave me out of the function", which would make this code 
compile (as it should, as it is not doing anything unsafe).

Shachar
Jul 26
parent John Colvin <john.loughran.colvin gmail.com> writes:
On Wednesday, 26 July 2017 at 08:20:42 UTC, Shachar Shemesh wrote:
 void fn(scope int* var)  safe {
     (*var)++;
 }

 void fn2()  safe {
     int a;

     fn(&a);
 }

 The above program does not compile:
 d.d(8): Error: cannot take address of local a in  safe function 
 fn2

 I propose that the scope keyword be activated to mean "I do not 
 pass the pointer you gave me out of the function", which would 
 make this code compile (as it should, as it is not doing 
 anything unsafe).

 Shachar
compile with -dip1000
Jul 26