OSX/FreeBSD: allocating an instance of a C++ class fails #17864
Labels
Arch:x86
Issues specific to x86
Feature:extern (C/C++/Obj-C)
interfacing to C, C++, Objective-C code
P3
Severity:normal
Rainer Schuetze (@rainers) reported this on 2018-06-14T06:30:13Z
Transferred from https://issues.dlang.org/show_bug.cgi?id=18986
Description
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.The text was updated successfully, but these errors were encountered: