[Issue 20559] New: Reference type + alias this + AA + AA.clear causes SEGV
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Mon Feb 3 18:24:12 UTC 2020
https://issues.dlang.org/show_bug.cgi?id=20559
Issue ID: 20559
Summary: Reference type + alias this + AA + AA.clear causes
SEGV
Product: D
Version: D2
Hardware: All
OS: All
Status: NEW
Severity: major
Priority: P1
Component: dmd
Assignee: nobody at puremagic.com
Reporter: pro.mathias.lang at gmail.com
Test code:
```
import std.stdio;
class Bar
{
int[string] aa;
alias aa this;
}
void main ()
{
scope b = new Bar;
b["Hello"] = 42;
b.clear; // SEGV happens here, next line is never reached
writeln("Oopsie");
}
```
This happens because 'clear' is defined as:
> void clear(T : Value[Key], Value, Key)(T aa)
And the code just blindly casts T to a `struct AA`:
https://github.com/dlang/druntime/blob/1049bb806679436103f8174c1f77541d5ad99091/src/object.d#L2167-L2170
--
More information about the Digitalmars-d-bugs
mailing list