@safe functions
Lars T. Kyllingstad
public at kyllingen.NOSPAMnet
Wed Jan 5 07:49:03 PST 2011
On Wed, 05 Jan 2011 15:35:09 +0000, Sean Eskapp wrote:
> This is either a compiler bug, or outdated language documentation, but
> I'm having some freedom with @safe functions:
>
> * No casting from a pointer type to any type other than void*. * No
> modification of pointer values.
> * No taking the address of a local variable or function parameter.
>
> I've attached code which does all three of these things, which compiles
> and runs.
>
> Inline assembler was an error, as well as casting from integer to a
> pointer type, but I didn't test anything else.
>
> I'm using dmd2.exe as my compiler.
> import std.stdio;
>
> @safe void foo(int x)
> {
> int a;
> int* y = &a; // taking address of local variable char* z =
> cast(char*)y; // casting pointer to non-pointer type *z = 4; //
writing
> using malformed pointer
>
> y = &x; // taking address of parameter, AND changing pointer
value *y =
> 4; // changing value
>
> int b = cast(int)y; // casting from pointer type to type that
isn't
> void*
> }
>
> void main()
> {
> int x = 50;
> foo(x);
> }
Hi! This forum is just a feed from Bugzilla, it is not meant for
discussions. Please file a bug report at http://d.puremagic.com/issues/
instead.
Thanks,
Lars
More information about the Digitalmars-d-bugs
mailing list