[Issue 15080] New: extern(C++) classes have wrong static data layout
via Digitalmars-d-bugs
digitalmars-d-bugs at puremagic.com
Thu Sep 17 08:00:29 PDT 2015
https://issues.dlang.org/show_bug.cgi?id=15080
Issue ID: 15080
Summary: extern(C++) classes have wrong static data layout
Product: D
Version: D2
Hardware: All
OS: All
Status: NEW
Keywords: C++, wrong-code
Severity: major
Priority: P1
Component: dmd
Assignee: nobody at puremagic.com
Reporter: yebblies at gmail.com
import core.stdc.stdio;
extern(C++) class C
{
uint x = 1;
uint y = 2;
void func() {}
}
extern(C++) class D : C
{
uint z = 3;
override void func() {}
}
__gshared D c = new D();
void main()
{
printf("%u\n", c.x);
printf("%u\n", c.y);
printf("%u\n", c.z);
}
The offsets are wrong because dmd assumes there is always a monitor word.
--
More information about the Digitalmars-d-bugs
mailing list