File tree Expand file tree Collapse file tree 1 file changed +14
-3
lines changed Expand file tree Collapse file tree 1 file changed +14
-3
lines changed Original file line number Diff line number Diff line change @@ -378,13 +378,24 @@ public override void CSharpMarshalToManaged(CSharpMarshalContext ctx)
378378 var typePrinter = new CSharpTypePrinter ( ctx . Context ) ;
379379 string qualifiedBasicString = GetQualifiedBasicString ( basicString ) ;
380380 string varBasicString = $ "__basicStringRet{ ctx . ParameterIndex } ";
381- bool usePointer = type . IsAddress ( ) || ctx . MarshalKind == MarshalKind . NativeField ;
381+ bool usePointer = type . IsAddress ( ) || ctx . MarshalKind == MarshalKind . NativeField ||
382+ ctx . MarshalKind == MarshalKind . ReturnVariableArray ;
382383 ctx . Before . WriteLine ( $@ "var { varBasicString } = {
383384 basicString . Visit ( typePrinter ) } .{ Helpers . CreateInstanceIdentifier } ({
384385 ( usePointer ? string . Empty : $ "new { typePrinter . IntPtrType } (&") } {
385386 ctx . ReturnVarName } { ( usePointer ? string . Empty : ")" ) } );" ) ;
386- ctx . Return . Write ( $@ "{ qualifiedBasicString } Extensions.{ data . Name } ({
387- varBasicString } )" ) ;
387+ string @string = $ "{ qualifiedBasicString } Extensions.{ data . Name } ({ varBasicString } )";
388+ if ( usePointer )
389+ {
390+ ctx . Return . Write ( @string ) ;
391+ }
392+ else
393+ {
394+ string retString = $ "{ Generator . GeneratedIdentifier ( "retString" ) } { ctx . ParameterIndex } ";
395+ ctx . Before . WriteLine ( $ "var { retString } = { @string } ;") ;
396+ ctx . Before . WriteLine ( $ "{ varBasicString } .Dispose();") ;
397+ ctx . Return . Write ( retString ) ;
398+ }
388399 }
389400
390401 private static string GetQualifiedBasicString ( ClassTemplateSpecialization basicString )
You can’t perform that action at this time.
0 commit comments