Comments (1)
I've managed to reduce it to UnrolledList!(RefCounted!(...)).
HashMap uses unrolled lists for buckets and will destroy them via typeid(bucket).destroy(&bucket)
while rehashing. Somehow the destructor for one RefCounted instance is called twice during
this, once explicitly via typeid(T).destroy(&item)
and another time via allocator.dispose(previous)
.
static struct E
{
}
alias Element = RefCounted!(E, RefCountedAutoInitialize.no);
UnrolledList!Element list;
auto r = refCounted(E.init);
Element.RefCountedStore.Impl* s = r._refCounted._store;
list.insertAnywhere(r);
typeid(list).destroy(&list);
assert (s._count == 1);
This is from UnrolledList
void clear()
{
Node* previous;
Node* current = _front;
while (current !is null)
{
previous = current;
current = current.next;
static if (!(is(T == class) || is(T == interface)))
foreach (ref item; previous.items)
typeid(T).destroy(&item); // FIRST destruction
static if (useGC)
{
import core.memory: GC;
GC.removeRange(previous);
}
allocator.dispose(previous); // SECOND destruction
}
_length = 0;
_front = null;
_back = null;
}
from containers.
Related Issues (20)
- HashMap initialization at compile time HOT 1
- Still issues in unrolled list HOT 1
- Shouldn't assume allocator is passed via reference/pointer
- CyclicBuffer unit test fails with 2.087 compiler
- UnrolledList -Wstringop-overflow HOT 2
- HashMap assert failure when passing non default allocator HOT 1
- Recursive template expansion with HashMap HOT 1
- feature request: hashset.insert(range!T inputs), i.e. add multiple elements in one call HOT 2
- unrolledlist.d unittest fails at line 637 HOT 5
- -betterC ? A question out of curiosity HOT 2
- Can we release a v0.8.1? HOT 4
- Cannot use HashSet as value type for HashMap HOT 2
- DynamicArray with non-copyable types. HOT 3
- UnrolledList insert doesn't work properly on ldc2 HOT 2
- DynamicArray should use std.experimental.allocator.common.reallocate
- TTree error in "contains" - "nogc"
- UnrolledList: item inserted at wrong location after a remove
- The benchmark example code from README.md fails to compile with recent DMD
- Get rid of deprecate warnings
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from containers.