@@ -2808,6 +2808,7 @@ public void GenerateFunctionCall(string functionName, List<Parameter> parameters
28082808
28092809 var originalFunction = function . OriginalFunction ?? function ;
28102810
2811+ var names = new List < string > ( ) ;
28112812 if ( originalFunction . HasIndirectReturnTypeParameter )
28122813 {
28132814 var indirectRetType = originalFunction . Parameters . First (
@@ -2825,8 +2826,8 @@ public void GenerateFunctionCall(string functionName, List<Parameter> parameters
28252826 Class retClass ;
28262827 type . TryGetClass ( out retClass ) ;
28272828 var @class = retClass . OriginalClass ?? retClass ;
2828- WriteLine ( $@ "var { Helpers . ReturnIdentifier } = new {
2829- TypePrinter . PrintNative ( @class ) } ( );" ) ;
2829+ WriteLine ( $@ "var { Helpers . ReturnIdentifier } = Marshal.AllocHGlobal( {
2830+ @class . Layout . GetSize ( ) } );" ) ;
28302831 }
28312832 else
28322833 {
@@ -2839,13 +2840,15 @@ public void GenerateFunctionCall(string functionName, List<Parameter> parameters
28392840
28402841 WriteLine ( "{0} {1};" , typeMap . CSharpSignatureType ( typePrinterContext ) ,
28412842 Helpers . ReturnIdentifier ) ;
2843+ names . Add ( $ "new IntPtr(&{ Helpers . ReturnIdentifier } )") ;
28422844 }
28432845 else
28442846 WriteLine ( "var {0} = {1};" , construct ) ;
28452847 }
2848+ if ( names . Count == 0 )
2849+ names . Add ( Helpers . ReturnIdentifier ) ;
28462850 }
28472851
2848- var names = new List < string > ( ) ;
28492852 foreach ( var param in @params )
28502853 {
28512854 if ( param . Param == operatorParam && needsInstance )
@@ -2862,12 +2865,6 @@ public void GenerateFunctionCall(string functionName, List<Parameter> parameters
28622865
28632866 var needsFixedThis = needsInstance && isValueType ;
28642867
2865- if ( originalFunction . HasIndirectReturnTypeParameter )
2866- {
2867- var name = string . Format ( "new IntPtr(&{0})" , Helpers . ReturnIdentifier ) ;
2868- names . Insert ( 0 , name ) ;
2869- }
2870-
28712868 if ( needsInstance )
28722869 {
28732870 var instanceIndex = GetInstanceParamIndex ( method ) ;
0 commit comments