December 04, 2008 [Issue 2490] New: extern(C++) can not handle structs as return types | ||||
---|---|---|---|---|
| ||||
http://d.puremagic.com/issues/show_bug.cgi?id=2490 Summary: extern(C++) can not handle structs as return types Product: D Version: 2.014 Platform: PC OS/Version: Linux Status: NEW Keywords: wrong-code Severity: normal Priority: P2 Component: DMD AssignedTo: bugzilla@digitalmars.com ReportedBy: jason.james.house@gmail.com 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(); } -- |
December 25, 2008 [Issue 2490] extern(C++) can not handle structs as return types | ||||
---|---|---|---|---|
| ||||
Posted in reply to d-bugmail | http://d.puremagic.com/issues/show_bug.cgi?id=2490 bugzilla@digitalmars.com changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED ------- Comment #1 from bugzilla@digitalmars.com 2008-12-25 04:39 ------- Fixed dmd 1.038 amd 2.022 -- |
Copyright © 1999-2021 by the D Language Foundation