Dub(DMD 2.099.1) builds and runs the following code without a warning.

    import std.stdio;
    import core.stdc.stdlib;

    @live
    void test()
    {
        int* p = cast(int*) malloc(32);
        p = cast(int*) malloc(32);
        free(p);
    }

    void main()
    {
        test();
        writeln("???");
    }

Isn't it supposed to trigger an error according to the doc (https://dlang.org/spec/ob.html)?

    @live void test()
    {
        auto p = allocate();
        p = allocate(); // error: p was not disposed of
        release(p);
    }


Reply via email to