www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 20726] New: safe function can modify __gshared data if


          Issue ID: 20726
           Summary:  safe function can modify __gshared data if passed as
                    ref parameter default value
           Product: D
           Version: D2
          Hardware: x86_64
                OS: Linux
            Status: NEW
          Severity: enhancement
          Priority: P1
         Component: dmd
          Assignee: nobody puremagic.com
          Reporter: zorael gmail.com

Manjaro/Arch x86_64, dmd v2.091.0 but also all dmd compilers v2.060 up to
current on run.dlang.io.

This passes and __gshared `gshared` is modified by `foo`.

__gshared int gshared = 42;

void foo(ref int i = gshared)  safe

void main()
    assert(gshared == 42);
    assert(gshared == 43);

Apr 08 2020