[Issue 17258] Pass by name doesn't work reliably and can sometimes lead to memory corruption
    via Digitalmars-d-bugs 
    digitalmars-d-bugs at puremagic.com
       
    Wed Mar 15 12:40:27 PDT 2017
    
    
  
https://issues.dlang.org/show_bug.cgi?id=17258
ag0aep6g at gmail.com changed:
           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |ag0aep6g at gmail.com
--- Comment #1 from ag0aep6g at gmail.com ---
Looks like the compiler thinks `var` is a field. Writing to `v.var` then stomps
over anything that's actually there.
----
struct ByName3(alias Var)
{
    alias var = Var;
    ubyte value = 1;
}
void main()
{
    ushort x;
    ByName3!x v;
    ubyte w = 2;
    v.var = 0xAA_BB; /* stomps over v.value and w */
    import std.stdio;
    writefln("%X", v.value); /* prints "BB", should be 1 */
    writefln("%X", w); /* prints "AA", should be 2 */
}
----
--
    
    
More information about the Digitalmars-d-bugs
mailing list