Bug 2490 – extern(C++) can not handle structs as return types

Status
RESOLVED
Resolution
FIXED
Severity
normal
Priority
P2
Component
dmd
Product
D
Version
D2
Platform
x86
OS
Linux
Creation time
2008-12-03T19:43:00Z
Last change time
2015-06-09T01:21:35Z
Keywords
wrong-code
Assigned to
bugzilla
Creator
jason.james.house

Comments

Comment #0 by jason.james.house — 2008-12-03T19:43:28Z
The code below shows that the this pointer gets corrupted when this code compiles and runs. Sample output: Bar = 0x81c33a8 This = 0xbf8dce20 cpp file: #include <iostream> struct foo{ int i; int j; }; class bar{ public: virtual foo getFoo(){ std::cout << "This = " << this << std::endl; foo f; return f; } }; bar* newBar(){ bar* b = new bar(); std::cout << "Bar = " << b << std::endl; return b; } d file: extern(C++){ struct foo{ int i; int j; } interface bar{ foo getFoo(); } bar newBar(); } void main(){ bar b = newBar(); foo f = b.getFoo(); }
Comment #1 by bugzilla — 2008-12-25T04:39:08Z
Fixed dmd 1.038 amd 2.022