On 1/25/2016 9:02 PM, Manu via Digitalmars-d wrote:
On 24 January 2016 at 20:40, Walter Bright via Digitalmars-d
<[email protected]> wrote:
On 1/22/2016 5:46 PM, Manu via Digitalmars-d wrote:

I brought a work laptop home this weekend in anticipation ;)


Here ya go:

   https://github.com/D-Programming-Language/dmd/pull/5364

Be wary of:

   https://issues.dlang.org/show_bug.cgi?id=15589

and use the workaround as necessary. This is lower priority, so I won't be
dealing with it for a bit.

Next blocker: https://issues.dlang.org/show_bug.cgi?id=15610

C++ methods with multiple-inheritence expect that 'this' is a pointer
to the base class that introduced the function.
When using C++ 'interface's, which C++ just treats like normal
multiple-inheritence, C++ expects that the 'this' pointer is adjusted
to the offset of the interface's vtable.

If I have:
extern(C++) interface Interface { voif f(); }
extern(C++) class C : Base, Interface
{
   void f();
}

Calling c.f(), D is passing 'this' unaltered, but C++ expects 'this'
is a pointer to 'Interface', and then it crashes accessing members at
incorrect offsets.


The PR 5364 does this. (And only Microsoft Win64 has this effect.)

Reply via email to