https://issues.dlang.org/show_bug.cgi?id=18259
Issue ID: 18259
Summary: allocatorObject's CAllocatorImpl should store the
passed allocator within
Product: D
Version: D2
Hardware: All
OS: All
Status: NEW
Severity: normal
Priority: P1
Component: phobos
Assignee: [email protected]
Reporter: [email protected]
allocatorObject uses the passed allocator to allocate the memory chunk that
will store the CAllocatorImpl instance, and thus, the allocator stored within
the newly created instance should be the one that was passed to the function.
This being said, the unittest below should pass.
unittest
{
import std.conv;
import std.experimental.allocator.mallocator;
import std.experimental.allocator.building_blocks.stats_collector;
alias SCAlloc = StatsCollector!(Mallocator, Options.bytesUsed);
SCAlloc statsCollectorAlloc;
assert(statsCollectorAlloc.bytesUsed == 0);
auto _allocator = allocatorObject(statsCollectorAlloc);
// Ensure that the allocator was passed through in CAllocatorImpl
// This allocator was used to allocate the chunk that holds the
// CAllocatorImpl object; which is it's own wrapper
assert(_allocator.impl.bytesUsed == stateSize!(CAllocatorImpl!(SCAlloc)));
_allocator.allocate(1);
assert(_allocator.impl.bytesUsed == stateSize!(CAllocatorImpl!(SCAlloc)) +
1);
}
--