[Issue 14618] New: can break immutable with inout and a delegate
via Digitalmars-d-bugs
digitalmars-d-bugs at puremagic.com
Sat May 23 12:42:44 PDT 2015
https://issues.dlang.org/show_bug.cgi?id=14618
Issue ID: 14618
Summary: can break immutable with inout and a delegate
Product: D
Version: D2
Hardware: All
OS: All
Status: NEW
Keywords: accepts-invalid
Severity: normal
Priority: P1
Component: DMD
Assignee: nobody at puremagic.com
Reporter: ag0aep6g at gmail.com
struct S
{
immutable(int)* p;
}
inout(int)* f(inout S s)
{
inout(int)* result;
auto dg = (inout(int)* p) {result = p;};
dg(s.p);
return result;
}
void main()
{
immutable int x = 42;
immutable int* p = &x;
assert(*p == 42); /* passes */
scope(exit) assert(*p == 42); /* fails */
int* m = f(S(p)); /* uh-oh */
*m = 13; /* writing over immutable *p */
}
--
More information about the Digitalmars-d-bugs
mailing list