Browse Source

FIXME: Managed override tramps need to support Itanium's return byval hidden argument

pull/1/head
Alexander Corrado 14 years ago
parent
commit
29aa72f872
  1. 11
      src/Mono.Cxxi/Abi/Impl/ItaniumAbi.cs

11
src/Mono.Cxxi/Abi/Impl/ItaniumAbi.cs

@ -64,6 +64,17 @@ namespace Mono.Cxxi.Abi { @@ -64,6 +64,17 @@ namespace Mono.Cxxi.Abi {
}
}
internal override Delegate GetManagedOverrideTrampoline (CppTypeInfo typeInfo, int vtableIndex)
{
// FIXME: HACK! we really need to support by val return types for managed override trampolines
if (typeInfo.VirtualMethods [vtableIndex] != null &&
IsByVal (typeInfo.VirtualMethods [vtableIndex].OrigMethod.ReturnTypeCustomAttributes))
return null;
return base.GetManagedOverrideTrampoline (typeInfo, vtableIndex);
}
protected override MethodBuilder DefineMethod (CppTypeInfo typeInfo, PInvokeSignature sig, ref int vtableIndex)
{
var builder = base.DefineMethod (typeInfo, sig, ref vtableIndex);

Loading…
Cancel
Save