This is completely unacceptable:

DPaste(https://dpaste.dzfl.pl/f54f578c4ec9)

import std.stdio;
import std.string;
import std.experimental.allocator;
import std.experimental.allocator.mallocator : Mallocator;

struct Bar(E) {
    E* ptr = null;
void allocate(int m) { ptr = Mallocator.instance.make!Foo(m); }
    ~this() {
        if(ptr !is null) Mallocator.instance.dispose(ptr);
    }
}

struct A {
    int m;
    ~this() { writefln("A.~this(%s)", m); }
}

struct Foo {
    A a;
    Bar!Foo bar;
    this(int m) { a = A(m); }
}

void main() {
    auto foo = Foo(1);
    foo.bar.allocate(10);
}

Output:
A.~this(1)

Expected output:
A.~this(10)
A.~this(1)

Can someone to fix this ASAP for $100?

Reply via email to