Shouldn't invalid references like this fail at compile time?
Mike Franklin
slavo5150 at yahoo.com
Tue Jan 23 02:38:42 UTC 2018
On Tuesday, 23 January 2018 at 02:25:57 UTC, Mike Franklin wrote:
> Due to the aforementioned bugs in my prior posts, I couldn't
> even make an example to demonstrate in @safe code, so I
> modified the example slightly in an effort to reproduce the
> same problem.
>
> import std.stdio;
>
> void main() @safe
> {
> string foo = "foo";
> string* ls0;
> string* p1, p2;
>
> ls0 = &foo;
> p1 = ls0;
> ls0.destroy();
> p2 = ls0;
> writeln(p2.length);
> }
>
> Error: program killed by signal 11
>
> https://run.dlang.io/is/ecYAKZ
>
Gah!!! I screwed up that example, and I can't edit the post. See
the example here:
import std.stdio;
void main() @safe
{
string foo = "foo";
string* ls0;
string* p1, p2;
ls0 = &foo;
p1 = ls0;
ls0.destroy();
p2 = ls0;
writeln(p2.length);
}
Compile with `-dip1000`
Error: program killed by signal 11
https://run.dlang.io/is/6L6zcH
So that's bad. But it looks like a bug in `-dip1000`, because if
I compile without `-dip1000`, I get:
onlineapp.d(9): Error: cannot take address of local foo in @safe
function main
https://run.dlang.io/is/rHpuf1
Mike
More information about the Digitalmars-d
mailing list