digitalmars.D.bugs - [Issue 18986] New: OSX/FreeBSD: allocating an instance of a C++
- d-bugmail puremagic.com (47/47) Jun 13 2018 https://issues.dlang.org/show_bug.cgi?id=18986
https://issues.dlang.org/show_bug.cgi?id=18986 Issue ID: 18986 Summary: OSX/FreeBSD: allocating an instance of a C++ class fails Product: D Version: D2 Hardware: x86 OS: Mac OS X Status: NEW Severity: normal Priority: P1 Component: dmd Assignee: nobody puremagic.com Reporter: r.sagitario gmx.de When allocating a C++ class instance with the constructor defined in C++, the wrong object address is used: // testcpp.cpp class Cpp { public: Cpp(); virtual void foo() {} int x; }; Cpp::Cpp() { x = 42; } // testd.d extern(C++) { class Cpp { public: this(); void foo(); int x; } } void main() { Cpp c = new Cpp; assert(c.x == 42); } The assertion fails for OSX and FreeBSD, but not on Windows and Linux. This happens because the constructor does not return 'this' on the former platforms. --
Jun 13 2018