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

          Issue ID: 13534
           Summary: std.variant can violate memory safety
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Severity: normal
          Priority: P1
         Component: Phobos
          Assignee: [email protected]
          Reporter: [email protected]

The following code can be compiled in dmd  v2.067-devel-590d4a9 but it should
not.

------
import std.variant;

void main() @safe {
    auto foo() @system { return 3; }
    auto v = Variant(&foo);

    v(); // foo is called in safe code!?
}
------

Currently whole part of std.variant is marked as trusted but it should not
because the safety of the functions or methods in this module
depends on the components which are stored in VariantN, Algebraic etc.

--

Reply via email to