[Issue 19316] GC runtime breaks @safe

d-bugmail at puremagic.com d-bugmail at puremagic.com
Sun Oct 21 18:27:56 UTC 2018


https://issues.dlang.org/show_bug.cgi?id=19316

Stanislav Blinov <stanislav.blinov at gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|RESOLVED                    |REOPENED
         Resolution|INVALID                     |---

--- Comment #2 from Stanislav Blinov <stanislav.blinov at gmail.com> ---
It is being passed: C may define static data accessible to 'safeFunc'.

The point is, this includes any arbitrary un- at safe code, e.g. catching an Error
or even a Throwable. Net effect is that this code:

static C c;

void safeFunc() @safe {
    destroy(c);
}

would fail to compile, and yet that same code executes via GC.

There's another unfortunate consequence of this behavior: 'pure' is also
affected, as is nothrow (though the latter terminates the program anyway as it
results in a FinalizationError).

--


More information about the Digitalmars-d-bugs mailing list