Bug 16180 – Unable to dispose an interface with std.experiment.allocator

Status
RESOLVED
Resolution
INVALID
Severity
normal
Priority
P1
Component
phobos
Product
D
Version
D2
Platform
x86_64
OS
Linux
Creation time
2016-06-17T11:55:35Z
Last change time
2020-03-21T03:56:33Z
Assigned to
No Owner
Creator
Maik Klein

Comments

Comment #0 by maikklein — 2016-06-17T11:55:35Z
I opened a stack overflow question which contains all the needed details http://stackoverflow.com/questions/37868594/disposing-a-class-with-an-interface?lq=1
Comment #1 by b2.temp — 2016-06-17T13:51:18Z
(In reply to Maik Klein from comment #0) > I opened a stack overflow question which contains all the needed details > > http://stackoverflow.com/questions/37868594/disposing-a-class-with-an- > interface?lq=1 There a dispose overload that works with interface. It's available because you can retrieve the object that implements the interface using "cast(Object) itf". So to me the report is invalid: uint a; interface Bar{} class Foo: Bar { ~this(){a = 1;} } void main() { import std.experimental.allocator.mallocator; import std.experimental.allocator; auto f = Mallocator.instance.make!Foo(); Bar b = f; Mallocator.instance.dispose(b); assert(a == 1); } I think that on S.O you ignore what is done here https://github.com/dlang/phobos/blob/master/std/experimental/allocator/package.d#L1135 This is basically what allows to destroy an object from its interface.
Comment #2 by maikklein — 2016-06-17T14:08:18Z
Okay I found the bug. It was using emsi_container as a dependency, even though I did not use it. It seems to have a dependency on std.experimental.allocator version 2.70, which then somehow overshadowed the current version of std.experimental.allocator. And the bug that I am reporting still existed in 2.70 but seems to be fixed in 2.71. So I guess I maybe should report this as an dub issue?
Comment #3 by b2.temp — 2016-06-17T15:11:56Z
I don't know. It's maybe worth asking Hackerpilot if his fork is still needed, the issues are addressed now, almost a year after the pull to phobos. In emsi containers the submodule allocators is very outdated: https://github.com/Hackerpilot/experimental_allocator/tree/cd8196a5b063b9019ea5529239da3181cc4fdc4f
Comment #4 by andrei — 2016-06-18T11:18:16Z
Looks like we can close this on the stdlib side.