https://issues.dlang.org/show_bug.cgi?id=12699
Issue ID: 12699
Summary: Possibly wrong code in object_.d
Product: D
Version: D2
Hardware: All
OS: All
Status: NEW
Severity: normal
Priority: P1
Component: druntime
Assignee: [email protected]
Reporter: [email protected]
TypeInfo_AssociativeArray is a TypeInfo class and its 'getHash' method is
implemented as:
override hash_t getHash(in void* p) nothrow @trusted const
{
return _aaGetHash(cast(void*)p, this);
}
But _aaGetHash expects an 'AA* aa' as the first parameter, not a TypeInfo. As a
result _aaGetHash will sometimes crash while attempting to access
'aa.impl.buckets', since at that offset it's accessing whatever happens to lay
at that address in a TypeInfo class.
This change was introduced in commit 87e5f64. Unless I'm misunderstanding
something I don't think the above is right.
--