Skip to content

Commit 7f567b6

Browse files
Saalvagetritao
authored andcommitted
Fix non-void returning functions with value-type out parameters
Also fixes indentation
1 parent 0c60384 commit 7f567b6

File tree

4 files changed

+5
-4
lines changed

4 files changed

+5
-4
lines changed

src/Generator/Generators/CSharp/CSharpMarshal.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -637,9 +637,9 @@ public override bool VisitPointerType(PointerType pointer, TypeQualifiers quals)
637637
Context.Before.WriteLine("fixed ({0}.{1}* {2} = &{3}.{4})",
638638
Context.Parameter.QualifiedType, Helpers.InternalStruct,
639639
arg, Context.Parameter.Name, Helpers.InstanceIdentifier);
640+
Context.HasCodeBlock = true;
640641
Context.Before.WriteOpenBraceAndIndent();
641642
Context.Return.Write($"new {typePrinter.IntPtrType}({arg})");
642-
Context.Cleanup.UnindentAndWriteCloseBrace();
643643
}
644644
else
645645
{

tests/dotnet/CSharp/CSharp.Tests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1999,7 +1999,7 @@ public void TestPointerToClass()
19991999
[Test]
20002000
public void TestValueTypeOutParameter()
20012001
{
2002-
CSharp.CSharp.ValueTypeOutParameter(out var unionTestA, out var unionTestB);
2002+
Assert.AreEqual(2, CSharp.CSharp.ValueTypeOutParameter(out var unionTestA, out var unionTestB));
20032003
Assert.AreEqual(2, unionTestA.A);
20042004
Assert.AreEqual(2, unionTestB.B);
20052005
}

tests/dotnet/CSharp/CSharp.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1792,8 +1792,9 @@ bool PointerTester::IsValid()
17921792

17931793
PointerTester* PointerToClass = &internalPointerTesterInstance;
17941794

1795-
void ValueTypeOutParameter(UnionTester* testerA, UnionTester* testerB)
1795+
int ValueTypeOutParameter(UnionTester* testerA, UnionTester* testerB)
17961796
{
17971797
testerA->a = 2;
17981798
testerB->b = 2;
1799+
return 2;
17991800
}

tests/dotnet/CSharp/CSharp.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1609,4 +1609,4 @@ union DLL_API UnionTester {
16091609
int b;
16101610
};
16111611

1612-
void DLL_API ValueTypeOutParameter(CS_OUT UnionTester* testerA, CS_OUT UnionTester* testerB);
1612+
int DLL_API ValueTypeOutParameter(CS_OUT UnionTester* testerA, CS_OUT UnionTester* testerB);

0 commit comments

Comments
 (0)